Hackdevil
Messages postés28Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention 5 mai 2014
-
7 juin 2013 à 09:33
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023
-
7 juin 2013 à 12:34
Bonjour,
Je suis en train de faire un petit prog qui permet de rechercher un fichier dans un dossier ainsi que tous ses sous dossiers.
Le dossier de recherche se trouve sur le réseau local.
Tout fonctionne bien mais là où ça pêche, c'est lorsqu'il y a des droits.
Je n'arrive pas à trouver comment faire pour gérer l'erreur d'accès interdit lorsqu'on passe sur un sous dossier où on n'a pas les droits.
Le but étant de scanner et lorsqu'on n'a pas le droit, on passe au dossier suivant.
Voici le code en VB.net :
sub Dir()
Dim di As DirectoryInfo = New DirectoryInfo("G:\classement")
Dim subdir As DirectoryInfo = New DirectoryInfo(di.FullName)
For Each Fichier In subdir.GetFiles("*" & txtboxRecherche.Text & "*", SearchOption.AllDirectories)
FormTableauAffichage.RtxtBoxListe.Text &= vbCrLf & Fichier.FullName
FormTableauAffichage.RtxtBoxListe.SelectionAlignment = HorizontalAlignment.Center
Next
End sub
L'erreur se produit ici =>
For Each Fichier In subdir.GetFiles("*" & txtboxRecherche.Text & "*", SearchOption.AllDirectories)
Une fois qu'il n'a pas le droit, ça s'arrete, je ne peux pas récupérer les répertoires et sous répertoires qu'il a trouvé, je ne trouve pas le moyen de le faire continuer malgré l'erreur.
Ça a l'air tout bête mais je n'ai trouvé aucune solution, les on error resume ou try catch ne me permettent pas de gérer l'erreur.
Hackdevil
Messages postés28Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention 5 mai 2014 7 juin 2013 à 12:32
J'ai finallement réussi à trouver.
Pour ceux qui ont eu le même souci :
Try
Dim TousLesFichiers As FileInfo() = Nothing
For Each Repertoire In di.GetDirectories
Try
TousLesFichiers = Repertoire.GetFiles("*" & txtboxRecherche.Text & "*", SearchOption.AllDirectories)
For Each ChaqueFichier In TousLesFichiers
FormTableauAffichage.RtxtBoxListe.Text &= vbCrLf & ChaqueFichier.FullName
FormTableauAffichage.RtxtBoxListe.SelectionAlignment = HorizontalAlignment.Center
Next
Catch ex As Exception
End Try
Next
Catch ex As UnauthorizedAccessException
End Try
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 7 juin 2013 à 09:37
Bonjour,
Tu devrais probablement lire les discussions ouvertes sur un sujet simlilaire au cours des 48 dernières heures.
L'une d'entre elles contient la réponse que tu cherches.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Je pense que la personne s'est mal exprimée et cherche en fait à faire la même chose que moi.
Lister tous les fichiers des dossiers et sous dossiers "accessibles".
En cas de refus d'accès, aller au prochain dossier.
N'y a-t-il aucun moyen prévu pour utiliser "SearchOption.AllDirectories" en prenant en compte les droits d'accès (accès refusé) ?
On est donc obligé de faire une recherche manuelle avec gestion d'erreurs ?
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 7 juin 2013 à 12:34
Bonjour,
Pas à ma connaissance, il te faudra faire ton propre code d'analyse récursive.
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---