Sommario di problema:Accesso negato durante l'eliminazione del file exe
ho una console app che, dopo aver copiato molte cartelle e file su una nuova posizione, un'unità locale, che quindi elimina alcuni file/cartelle . Uno di questi tipi di file che elimina è file .exe. Quando si tenta di eliminare i file ha detto che mi dà un errore di accesso negato (Questo si verifica anche durante il tentativo di eliminare altri tipi di file e cartelle, nonché)
Altre note:.
ho visto parecchie domande, come ad esempio come Unable to delete .exe file through c#. Tuttavia, il processo non è mai stato in esecuzione sul mio computer locale né sull'origine da cui è stato copiato. Sono sia un amministratore locale che un amministratore di dominio nel nostro dominio e ho avuto la proprietà di tutte le cartelle e i file nelle directory con cui lavoro. Ma continua a negarmi l'accesso quando provo a cancellare il file dal codice. Sono comunque in grado di eliminare tali file/cartelle manualmente (clicca eliminare la chiave)
Problema:.
come detto in precedenza Sto cercando un modo per superare questo problema mi ha negato l'accesso per eliminare questi " Tipi di file "non validi" e cancellarli dal mio codice.
My Code: (Aggiornato)
#region Delete_Illegal_Items
public static void RemoveIllegalItems()
{
Console.Clear();
DirectoryInfo Libraries = new DirectoryInfo(Library.DestinationMain);
try
{
foreach (var Lib in Libraries.GetDirectories())
{
Console.WriteLine("Working On {0}.", Lib.Name);
Parallel.Invoke(
() =>
{
RemoveBadFiles(Lib);
},
() =>
{
DeleteEmptyFolders(Lib);
}
);
}
}
catch (AggregateException e)
{
Console.WriteLine("There Was An Unusual Error During Initialization Of Library Correction:\n{0}", e.InnerException.ToString());
}
}
private static string[] BadFiles = {
@".hta",
@".exe",
@".lnk",
@".tmp",
@".config",
@".ashx",
@".hta.",
@".hta::$DATA",
@".zip",
@".asmx",
@".json",
@".soap",
@".svc",
@".xamlx",
@".msi",
@".ops",
@".pif",
@".shtm",
@".shtml",
@"smt",
@".vb",
@".vbe",
@".vbs",
@".ds_store",
@".db",
@".ini",
@".tiff"
};
private static void RemoveBadFiles(DirectoryInfo directory)
{
DirectoryInfo[] dirs = null;
FileInfo[] files = null;
if (directory != null)
{
files = directory.GetFiles();
}
try
{
dirs = directory.GetDirectories();
}
catch (IOException) { }
catch (Exception e)
{
Console.WriteLine("\nError During Enumeration Of Items To Delete:\n{0}", e.Message);
}
if (files != null)
{
foreach (var file in files)
{
try
{
if (file.IsReadOnly)
{
file.IsReadOnly = false;
}
if (BadFiles.Contains(Path.GetExtension(file.FullName)))
{
File.Delete(file.FullName);
}
}
catch (Exception e)
{
Console.WriteLine("\nError During Removal Or Illegal Files:\n" + e.Message);
}
}
}
if (dirs != null)
{
foreach (var dir in dirs)
{
switch (dir.Name)
{
case ".TemporaryItems":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
case "AI_RecycleBin":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
case ".ToRemove":
{
try
{
Directory.Delete(dir.FullName);
}
catch { }
break;
}
default:
{
break;
}
}
RemoveBadFiles(dir);
}
}
}
private static void DeleteEmptyFolders(DirectoryInfo directory)
{
Program Main = new Program();
try
{
DirectoryInfo[] dirs = directory.GetDirectories();
foreach (var subDirectory in dirs)
{
int sum = Library.CountLibrary(subDirectory.FullName);
if (sum == 0)
{
Directory.Delete(subDirectory.FullName);
}
DeleteEmptyFolders(subDirectory);
}
}
catch { }
}
#endregion
Qualsiasi aiuto sarebbe molto apprezzato. Se questa domanda è stata direttamente risposta altrove, non esitare a menzionarla nel commento. Come ho detto sopra, ho esaminato la domanda precedente riguardante questo problema e non ho ancora trovato una soluzione. Altrimenti, grazie per il tuo aiuto.
Quali autorizzazioni viene eseguita sul sistema dall'applicazione Utente console dell'utente? L'app della console crea questi file? –
È in esecuzione sotto di me, i file vengono copiati da una condivisione di file di rete su un'unità locale in cui sono presenti i diritti di amministratore locale. Inoltre, sia la condivisione di file che la macchina locale si trovano all'interno di un dominio che ho accesso completo in lettura/scrittura a tutto ciò che appartiene al nostro dominio. Non sta creando nulla, ma solo copiando e poi cancellando dai dati copiati. – CalebB
Quale riga provoca l'eccezione? Questo vale per qualsiasi file o forse solo per un particolare file? – dymanoid