Når det så kører får jeg en System.UnauthorizedAccessException når den når til 'C:\Windows\Temp'
Og så stopper den ligesom der, jeg har prøvet at sætte en try-catch blok op, men den kører aldrig videre end den mappe, og kører exception handleren i et loop.
Er der nogen der kender en måde at trumfe igennem at den skal ignore den exception, eller måske en helt anden måde at sørge for denne funktion?
udsnit af min kode:
private List<string> Apps { get { List<string> apps = new List<string>();
// loader alle elementer fra en serialized List foreach (string item in Serializer.LoadItems) { if (File.Exists(item)) apps.Add(item); else if (Directory.Exists(item)) { foreach (string file in Directory.GetFiles(item, "*.exe", SearchOption.AllDirectories)) { apps.Add(file); } } } return apps; } }
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Tjek op på hvad der er af permissions på temp-folderen, den bruger som du eksekvere din applikation med skal have rettigheder.
En anden ting... som jo naturligvis ikke har noget at gøre med om det virker eller ej.. Men man bør ikke bruge properties til den slags der. Et metodekald med et godt navn som indikerer hvad man får retur er at foretrække. Best practice siger, brug properties til noget som er instant, og i dit tilfælde vil det tage tid at løbe folderne igennem.
Jeg er ikke interreseret i at programmet skal få uac til at komme frem, er mere interesseret i at den skal ignore de mapper der ikke er adgang til. Hvordan griber jeg det så an?
Jeg bruger i stedet en metode, der tager en process som argument, som derefter beregnes mappen på det Process.Modul[0].FileName, hvilket efter hvad jeg har kunne finde, for det meste er exe filen der er startet. Følgende er hvad jeg bruger:
private bool isRemovedApp(Process p) { foreach (string item in Serializer.LoadItems) { //eks på item: // C:\Windows // C:\Program Files\Prog.exe
if (File.Exists(item)) { if (p.Modules[0].FileName.ToLower() == item.ToLower()) return true; } else if (Directory.Exists(item)) { string oldPath = Directory.GetParent(p.Modules[0].FileName).FullName.ToLower();
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.