IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

GetFiles : L'accès au chemin 'C:\Documents and Settings' est refusé


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut GetFiles : L'accès au chemin 'C:\Documents and Settings' est refusé
    Bonjour à tous.

    J'ai rencontré un problème lorsque j'utilise la fonctions My.Computer.FileSystem.GetFiles, si je choisi le chemin "C:\" il me met le messsage d'erreur écrit dans le titre
    L'accès au chemin d'accès 'C:\Documents and Settings' est refusé
    et je ne sais pas comment contourner le problème ! Car inévitablement il sort de la boucle for each pour parcourir tous les fichiers, et il ne me le fait pas qu'avec ce dossier.

    J'ai fait des recherches à propos de FileIOPermission mais sans succès (http://msdn.microsoft.com/fr-fr/libr...8VS.90%29.aspx).

    Merci pour votre aide, cordialement,

    AliHome

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Quel OS ?
    Fais voir le code qui pose problème

  3. #3
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    Surement un problème de droit connecte toi en admin sur ton poste

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Windows 7. Et j'ai une session administrateur le problème ne vient pas de là.

    Le code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For each file as string in My.Computer.FileSystem.GetFiles("C:\")
    Rien de plus !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par AliHome Voir le message
    Windows 7. Et j'ai une session administrateur le problème ne vient pas de là.
    J'ai la même erreur de mon côté. En fait sous Windows 7 le dossier "Documents and Settings" n'existe plus, il est remplacé par le dossier "Users". Ou plus exactement, il existe, mais il n'est pas visible et on ne peut pas y accéder, même en temps qu'admin. D'ailleurs si tu essaies d'y accéder via l'explorateur ou la ligne de commande, tu verras que ça ne marche pas non plus

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Mmh oui et tout ça je m'en doutais, du coup ma question est, est-il possible de continuer la boucle malgré cela ? Y a t-il un moyen "d'éviter" de passer par certains dossier tout naze comme celui là ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par AliHome Voir le message
    Mmh oui et tout ça je m'en doutais, du coup ma question est, est-il possible de continuer la boucle malgré cela ? Y a t-il un moyen "d'éviter" de passer par certains dossier tout naze comme celui là ?
    Bah si ça pète sur GetFiles, la boucle ne commence même pas, donc elle ne peux pas continuer. Ou alors tu parles d'une autre boucle "autour" de celle-ci ? Dans ce cas il suffit de mettre un Try/Catch pour intercepter l'exception

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Bah j'ai déjà mis le for each dans un try catch et donc quand il rencontre cette erreur il sort de la boucle ! Et ca moi je veux pas ! Car après ca arrête le parcours de mes dossiers et toute ma recherche est foutue, dans tous les cas (si le chemin est C:\ ou D:\ par exemple) . Donc je cherche à contourner ce problème, peut être dans le "wildcards" je peux indiquer de ne pas tenir compte de certains dossier ?

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Va falloir que tu me montres un peu plus de code, parce que là je peux pas t'aider...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Public Sub LoadFileList()
            Try
                MusicList.Clear()
     
                For Each file As String In My.Computer.FileSystem.GetFiles(FolderPath, FileIO.SearchOption.SearchAllSubDirectories)
                    Dim ext As String = LCase(IO.Path.GetExtension(file)).Replace(".", "")
                    If AudioFormat_List.Contains(ext) Then
                        MusicList.Add(file)
                    End If
                Next
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
        End Sub

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, donc c'est bien ce que je te disais... Si l'erreur se produit sur GetFiles, il ne sort pas de la boucle, puisqu'il n'y rentre jamais. Donc je ne vois pas trop ce que tu voudrais continuer...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Oui tu as raison, je me suis mal exprimé. Donc je reformule, je souhaiterais continuer à parcourir les dossiers avec getfiles même en rencontrant cette erreur, ou l'éviter avec des "paramètres" de recherche dans le wildcard si c'est possible (pour passer directement au dossier suivant si il s'appelle "Documents and Settings", par exemple) .

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ah ok, je crois que je commence à comprendre... toi tu fais GetFiles sur "C:\", mais ça pète quand il commence à chercher ce qu'il y a dans "Documents and settings".

    Le problème c'est qu'avec un GetFiles récursif tu ne peux pas contrôler ce qui se passe... De toutes façons, en faisant un GetFiles sur tout le disque, tu vas récupérer des centaines de milliers de fichiers, et la RAM utilisée par ton programme va exploser.

    Donc il faut que tu fasses ça un peu plus manuellement : parcours les répertoires un par un sans l'option SearchAllSubdirectories, et gère toi-même la récursivité. Un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
      Public Sub LoadFileList()
          MusicList.Clear()
          LoadFileList(FolderPath, MusicList)
        End Sub
     
      Private Sub LoadFileList(ByVal path As String, ByVal list As List(Of String))
          Try
              ' Parcours des fichiers du répertoire
              For Each file As String In My.Computer.FileSystem.GetFiles(path)
                    Dim ext As String = LCase(IO.Path.GetExtension(file)).Replace(".", "")
                    If AudioFormat_List.Contains(ext) Then
                        list.Add(file)
                    End If
              Next
     
              ' Parcours des sous-répertoires
              For Each subdir As String In My.Computer.FileSystem.GetDirectories(path)
                  LoadFileList(subdir, list)
              Next
           Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
      End Sub
    Avec ce code, si un répertoire n'est pas accessible, ça remontera à la fonction appelante qui continuera sa propre boucle

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Oui mais là, arrivé à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              For Each subdir As String In My.Computer.FileSystem.GetDirectories(path)
                  LoadFileList(subdir, list)
              Next
    le problème sera le même ! Non ? J'ai du mal à comprendre "ça remontera à la fonction appelante qui continuera sa propre boucle " !

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par AliHome Voir le message
    Oui mais là, arrivé à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              For Each subdir As String In My.Computer.FileSystem.GetDirectories(path)
                  LoadFileList(subdir, list)
              Next
    le problème sera le même ! Non ? J'ai du mal à comprendre "ça remontera à la fonction appelante qui continuera sa propre boucle " !
    Bah tu as testé ? Moi oui, et ça marche...

    La fonction est récursive, donc si tu es dans LoadFileList("C:\"), ça va appeler (entre autres) LoadFileList("C:\Documents and settings"), qui va péter sur le GetFiles. Mais l'exception sera interceptée, et ça va simplement reprendre l'exécution de LoadFileList("C:\") là où ça en était

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    D'accord je comprend, je pense pouvoir me débrouiller avec ca. Merci beaucoup pour ton aide en tous cas !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C:\Documents and Settings\ accès refusé
    Par Triguns dans le forum VB.NET
    Réponses: 18
    Dernier message: 18/05/2011, 14h15
  2. écrire dans le chemin C:\Documents and Settings\
    Par nadjibo dans le forum Débuter
    Réponses: 5
    Dernier message: 09/09/2009, 11h10
  3. Réponses: 2
    Dernier message: 05/05/2006, 19h09
  4. Peut-on supprimer les .xlm dans Documents and Settings\
    Par marie-dominique dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 08/03/2006, 23h18
  5. comment changer nom du dossier apres documents and settings
    Par orientalys dans le forum Windows XP
    Réponses: 1
    Dernier message: 09/12/2005, 01h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo