UnAutorizedAccesException

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Code:
For Each map In IO.Directory.GetDirectories(TextBoxMap.Text, zoekterm, onderliggend)
   debug.print(map)
Next

Ik laat met deze code alle mappen zoeken, maar soms krijg ik een UnAutorizedAccesException. Hoe kan ik dit voorkomen?

Het helpt niet om dit te zetten:
Code:
Try
    For Each map In IO.Directory.GetDirectories(TextBoxMap.Text, zoekterm, onderliggend)
        MsgBox(map)
    Next
Catch UAAE as UnAutorizedAccesException
End Try
omdat hij op het moment dat hij een fout vind de For-loop niet voortzet...

Dus hoe kan ik toch alle mappen zoeken? Is er een manier om door te gaan ondankt zo'n map waar je geen toegang tot hebt?
 
Moet het niet zo:

Code:
For Each map In IO.Directory.GetDirectories(TextBoxMap.Text, zoekterm, onderliggend)
    Try
        MsgBox(map)
    Catch ex as Exception
    End Try
Next
 
Laatst bewerkt:
Moet het niet zo:

Code:
For Each map In IO.Directory.GetDirectories(TextBoxMap.Text, zoekterm, onderliggend)
    Try
        MsgBox(map)
    Catch ex as Exception
    End Try
Next

Nee want de foutmelding vindt plaats in deze regel:
Code:
For Each map In IO.Directory.GetDirectories(TextBoxMap.Text, zoekterm, onderliggend)
 
Shoot, dit is nogal lastig, ik krijg het zelf ook niet voor elkaar.

Je kan wel dit proberen:

Imports System.IO bovenaan je code zetten.
Plaats een ListBox op je form en noem deze lb1.
Plaats dan een BackGroundWorker control en plaats de volgende code onder de DoWork event:

Code:
        Try
            'Begin directory om te doorzoeken
            Dim folders As New DirectoryInfo("C:\")

            'Plaats elke folder in de begin directory...
            For Each folder In folders.GetDirectories

                '...in de listbox
                lb1.Items.Add(folder.ToString)

                'Plaats elke subfolder in elke gevonden folder
                For Each subfolder In folder.GetDirectories("*", SearchOption.AllDirectories)

                    '...in de listbox
                    lb1.Items.Add(subfolder)

                Next
            Next

            'Vang eventuele errors zoals UnauthorizedAccess op
        Catch ex As UnauthorizedAccessException
        Catch ex As Exception
        End Try

En als laatste plaats je de volgende code onder datgeven wat de die code moet aanroepen:

Code:
        CheckForIllegalCrossThreadCalls = False
        BackgroundWorker1.RunWorkerAsync()

Ik weet niet of je hier wat aan hebt.
Success in ieder geval. :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan