miXer Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) Jeg lager et program som skal liste opp filer på maskinen som er større enn bruker angir eller mindre enn bruker angir og presentere dette i en listview med størrelse på filen o.s.v. Et problem jeg har er System.IO.Directory.GetFiles() Bruk: string[] files = System.IO.Directory.GetFiles(@"C:\", "*.*", SearchOption.AllDirectories); Problemet med dette er at dersom den kommer over en mappe eller fil som den ikke har tilgang til feiler den og ingen filer blir lagt til i arrayet. Finnes det en metode som legger til alle filene den finner, og hopper over de filene eller mappene den ikke har tilgang til? Uten dette vil aldri mitt program fungere. Endret 20. april 2009 av miXer Lenke til kommentar
GeirGrusom Skrevet 16. april 2009 Del Skrevet 16. april 2009 Du kan få UAC til å elevere programmet ditt. Dette gjøres ved at du høyreklikker på prosjektet, trykker på Add->New Item, velger Application Manifest. I denne finner du linjen <requestedExecutionLevel level="asInvoker" uiAccess="false" /> Bytt denne med <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> Nå vil det dukke opp et UAC skjold på programfilen din. Når du starter programmet, vil UAC reagere. Lenke til kommentar
miXer Skrevet 16. april 2009 Forfatter Del Skrevet 16. april 2009 Takk GeirGrusom, det hjalp en del, men fortsatt ikke helt i mål. Nå kom feilmeldingen: Message: 'Access to the path "C:\Windows\System32\LogFiles\WMI\RtBackup" is denied.' Source: mscorlib Noen måte å få absolutt full tilgang til alle mapper / filer på disken eller hoppe over de mappene / filene som ikke engang administrator har tilgang til? Lenke til kommentar
FLarsen Skrevet 18. april 2009 Del Skrevet 18. april 2009 (endret) Du kan ikke få Directory.GetFiles() til å hoppe over ting den ikke har tilgang til. Du blir nødt til å behandle hver mappe individuelt for å komme rundt problemet, i stedet for å bare bruke GetFiles på den øverste. Heldigvis for deg så har jeg også hatt det problemet og har allerede skrevet en funksjon for det: string[] GetAllFiles(string topFolder) { List<string> folders = new List<string>(); List<string> fileList = new List<string>(); folders.Add(topFolder); while (folders.Count > 0) { string current = folders[folders.Count - 1]; folders.RemoveAt(folders.Count - 1); try { string[] dirs = Directory.GetDirectories(current, "*", SearchOption.TopDirectoryOnly); string[] files = Directory.GetFiles(current, "*", SearchOption.TopDirectoryOnly); foreach (string dir in dirs) folders.Add(dir); foreach (string file in files) fileList.Add(file); } catch (UnauthorizedAccessException) { } } return fileList.ToArray(); } Gjør hva du vil med den. Endret 18. april 2009 av FLarsen Lenke til kommentar
miXer Skrevet 20. april 2009 Forfatter Del Skrevet 20. april 2009 Tusen takk FLarsen!! Det løste problemet mitt. Har prøvd meg selv på en slik metode som pakker inn GetFiles i mange operasjoner, men har ikke lykkes i den grad du har! Så tusen takk! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå