Lister les répertoires et sous répertoires, accès refusé... [Résolu]

Hackdevil 28 Messages postés dimanche 2 janvier 2005Date d'inscription 5 mai 2014 Dernière intervention - 7 juin 2013 à 09:33 - Dernière réponse : NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscription 19 avril 2018 Dernière intervention
- 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.
Afficher la suite 

5 réponses

Répondre au sujet
Hackdevil 28 Messages postés dimanche 2 janvier 2005Date d'inscription 5 mai 2014 Dernière intervention - 7 juin 2013 à 12:32
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Hackdevil
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 7 juin 2013 à 09:37
0
Utile
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.
Commenter la réponse de ucfoutu
Hackdevil 28 Messages postés dimanche 2 janvier 2005Date d'inscription 5 mai 2014 Dernière intervention - 7 juin 2013 à 10:05
0
Utile
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 ?
Commenter la réponse de Hackdevil
Hackdevil 28 Messages postés dimanche 2 janvier 2005Date d'inscription 5 mai 2014 Dernière intervention - 7 juin 2013 à 12:34
0
Utile
Oops, ne pas oublier la déclaration :

Dim di As DirectoryInfo = New DirectoryInfo("G:\classement")
Commenter la réponse de Hackdevil
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscription 19 avril 2018 Dernière intervention - 7 juin 2013 à 12:34
0
Utile
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
---
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.