Poursuivre un traitement interrompu par une exception

cs_NOLISPU Messages postés 11 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 21 décembre 2010 - 6 oct. 2010 à 21:12
cs_NOLISPU Messages postés 11 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 21 décembre 2010 - 6 oct. 2010 à 21:15
Bonjour à tous,

Je cherche à résoudre le problème suivant

Je voudrais obtenir dans un tableau la liste des sous-répertoires d'un répertoire. Pour cela j'utilise la méthode GetDirectories dans laquelle je précise :
- le Path du répertoire racine
- un SearchPattern de recherche permettant de filtrer les fichiers
- la SearchOption AllDirectories pour traiter les répertoires imbriqués

Deux petites fonctions me permettent de tester ce que je souhaite faire :
- la première Fld_Tre :
recherche les directories
- la seconde Fld_Sel :
est utilisée par la première pour sélectionner le répertoire que l'on voudra analyser

Ces deux fonction marchent correctement, sauf si l'un des répertoires analysés n'est pas autorisé (Exemple sur lequel je tombe souvent : le répertoire "System Volume Information". Il y a alors déclenchement d'une exception "UnauthorizedAccessException" et la fonction ne donne aucun résultat.

Comment puis-je faire pour contourner ce problème ?

- Soit une fois l'erreur détectée, poursuivre le traitement
- Soit autoriser temporairement l'accès. Comment ?

Merci par avance à tous pour vos réponses.

Nolispu


Voici le source des 2 Fonctions Fld-Tre et Fld-Sel citées :

1 réponse

cs_NOLISPU Messages postés 11 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 21 décembre 2010
6 oct. 2010 à 21:15
[b]Voici le source des 2 Fonctions Fld-Tre et Fld-Sel citées :
/b
Module Mod_Fld

Public Function Fld_Sel( _
Optional ByRef SelectedPath As String = "C:", _
Optional ByRef Description As String = "Description" _
) As String

'>>> Sélection d'un Répertoire par dialogue utilisateur (via FolderBrowserDialog) =========

Dim Dlg As New FolderBrowserDialog

Dlg.RootFolder = Environment.SpecialFolder.Desktop 'Typologie Windows Vue des Répertoires à proposer
Dlg.SelectedPath = SelectedPath 'Repertoire sélectionné
Dlg.Description = Description 'Description

Dlg.ShowDialog() 'Ouverture boite de dialogue sélection de répertoire

Fld_Sel = Dlg.SelectedPath 'Récupération path répertoire sélectionné

End Function

Public Function Fld_Tre( _
Optional ByRef Path As String = "", _
Optional ByRef SearchPattern As String = "*", _
Optional ByRef SearchOption As SearchOption = SearchOption.AllDirectories _
) As Array

'>>> Obtention de la liste (Masquée) des Sous-Répertoires d'un Répertoire Fld_Tre Nothing

If Path "" Then Path Fld_Sel("D:", "Selectionner Répertoire Racine")

Dim DirRot As DirectoryInfo = New DirectoryInfo(Path)
Try
Dim DirsInf As DirectoryInfo() = DirRot.GetDirectories(SearchPattern, SearchOption)
Fld_Tre = DirsInf
Catch e As UnauthorizedAccessException
MsgBox("Execution interrompue : Autorisations insuffisantes" & vbCrLf & e.Message)
Catch e As Exception
MsgBox(e.Message)

End Try

End Function
End Module
0
Rejoignez-nous