20. december 2007 - 16:05Der er
8 kommentarer og 1 løsning
Delete Directory - UnauthorizedAccessException
Hej eksperter...
Jeg har lavet en stump kode som scanner efter nogle specielt navngivne folders. Det er så meningen at min collection af folders skal slettes efterfølgende. Al min kode til at scanne for folders osv. virker, men når jeg skal til at slette dem har jeg et problem.
Jeg får en System.UnauthorizedAccessException når jeg forsøget at kalde directoryInfo.Delete(true) (for at slette directory + files and subfolders).
Jeg har ingen problemer med at delete manuelt, så hvordan får jeg dekoreret min kode så jeg har de rette rettigheder?
De folders som deletes er Hidden, ReadOnly, og de indeholder filer som også er ReadOnly.
Jeg har prøvet mange forskellige tiltag, men får stadig den samme exception. Jeg har ikke kunnet finde noget på nettet bortset fra generel security information og mangelfulde eksempler.
Er der én af jer der har et kort eksempel, som kan hjælpe mig på vej?
Er du logget ind som administrator? Kører du Vista? I så fald, kører du Visual Studio med administrator rettighedder? Har du nogle af filerne i folders'ne, åbne i nogen programmer?
Prøv at checke det, ellers så prøv at putte din kode in sådan her:
Ja jeg er administrator (& Vista), men spørsmålet er ikke vedrørende at fange en ekseption, men derimod hvorledes man dekorerer sin kode til at få samme rettigheder som aktuelle bruger. Jeg har puslet med områdeer så som Identity, DirectorySecurity og FileSystemAccessRule, men jeg har altså ikke fundet den korrekte løsning endnu.
Ovenstående kode skulle klare alle filer som er Read-Only. Men ikke dem i undermapperne.. Det kræver lige lidt ekstra kode. Men ovenstående skulle ihvertfald hjælpe dig godt på vej
Ved du hvad... Du har ret! Problemet var at der dybt nede i den underliggende struktur, stadig var filer som var ReadOnly. Jeg havde ellers prøvet dette også, men åbenbart havde jeg ikke været grundig nok.
foreach (FileInfo fileInfo in directoryInfo.GetFiles()) { fileInfo.Attributes = FileAttributes.Normal; }
foreach (DirectoryInfo directory in directoryInfo.GetDirectories()) { SetNormalAttribute(directory); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.