Rimuovere una cartella assumendone il controllo
Updated at: 30/09/2014
Ogni tanto può capitare che sebbene si stia girando con i diritti di amministratore, alcune cartelle non vengano cancellate, con la segnalazione di "permission denied".
Per ovviare al problema è possibile usare queste due funzioni (una in realtà chiama l'altra)
public static bool rimuovi_directory(string folder, bool recursive = true)
{
bool risultato = false;
try
{
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(folder);
if (dir.Exists)
{
setAttributesNormal(dir);
dir.Delete(recursive);
}
risultato = true;
}
catch (Exception e)
{
risultato = false;
}
return risultato;
}
private static void setAttributesNormal(DirectoryInfo dir)
{
foreach (DirectoryInfo subDirPath in dir.GetDirectories())
{
try
{
setAttributesNormal(subDirPath);
}
catch (Exception e) { }
}
foreach (FileInfo filePath in dir.GetFiles())
{
try
{
filePath.Attributes = FileAttributes.Normal;
}
catch (Exception e) { }
}
}