Lister les répertoires et sous répertoires, accès refusé...

Résolu
Hackdevil Messages postés 28 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 mai 2014 - 7 juin 2013 à 09:33
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 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.

Merci.

5 réponses

Hackdevil Messages postés 28 Date d'inscription dimanche 2 janvier 2005 Statut Membre Derniè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


Merci encore.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0
Hackdevil Messages postés 28 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 mai 2014
7 juin 2013 à 10:05
Bonjour,

Merci pour ta réponse, effectivement je suis tombé sur un sujet similaire mais que je n'avais pas vu car pas dans la même sous catégorie.

http://www.vbfrance.com/forum/sujet-DIRECTORY-GETFILES-ACCES-REFUSE_1643530.aspx

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 ?
0
Hackdevil Messages postés 28 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 mai 2014
7 juin 2013 à 12:34
Oops, ne pas oublier la déclaration :

Dim di As DirectoryInfo = New DirectoryInfo("G:\classement")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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
---
0
Rejoignez-nous