Poursuivre un traitement interrompu par une exception
cs_NOLISPU
Messages postés11Date d'inscriptiondimanche 5 octobre 2008StatutMembreDernière intervention21 décembre 2010
-
6 oct. 2010 à 21:12
cs_NOLISPU
Messages postés11Date d'inscriptiondimanche 5 octobre 2008StatutMembreDernière intervention21 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 :
A voir également:
Poursuivre un traitement interrompu par une exception
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)