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

C# Discussion :

DirectoryInfo Exeption "l'accès au chemin d'accès xyz est refusé"


Sujet :

C#

  1. #1
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut DirectoryInfo Exeption "l'accès au chemin d'accès xyz est refusé"
    Bonjour à tous,

    Comme petit exercice je fais un parcours de mon arborescence de fichier en recursif avec DirectoryInfo.

    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
    24
    25
    26
    27
     
    private void Browse(string _path, TreeViewItem _node)
                {
                    DirectoryInfo dirRoot = new DirectoryInfo(_path);
     
                    //if (IsAccessDirectory(dirRoot))
                    {
                        try
                        {
                            foreach (DirectoryInfo nextFolder in dirRoot.GetDirectories())
                            {
                                if (!nextFolder.Attributes.HasFlag(FileAttributes.Hidden))
                                {
                                    TreeViewItem child = new TreeViewItem { Header = nextFolder.Name.ToString() };
     
                                    _node.Items.Add(child);
     
                                    Browse(nextFolder.FullName, child);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                }
    J'ai mis un test pour ne pas afficher les dossiers cachés et système car je n'y avais pas accès (Style le fichier de la corbeille).

    Par contre je tombe sur certains fichiers pour lesquels il faut des droits pour y accéder. J'ai le cas avec un répertoire Backup de SqlServer. Si j'essaie d'y accéder par mon explorateur windows j'ai le message ci-joint. A partir du moment ou j'ai cliquer sur "Continuer", le programme passe aussi.

    Mon programme passe donc par une exeption "l'accès au chemin d'accès xyz est refusé". Je me doute qu'il s'agit d'un problème de droit. Mais je ne vois rien dans DirectoryInfo qui me permette de faire un test pour cela.

    Pour l'instant je triche un peu en faisant une fonction qui teste l'accès et je gère l'exception avec un try catch , mais c'est pas très propre je trouve :

    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
     
    private bool IsAccessDirectory(DirectoryInfo dir)
                {
                    bool bAcces = true;
     
                    try
                    {
                        dir.GetDirectories();
                    }
                    catch(Exception)
                    {
                        bAcces = false;
                    }
     
                    return bAcces; 
                }
    Quelqu'un a t'il une idée pour rendre cela plus propre ?
    Images attachées Images attachées  
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    En effet tu peux vérifier les permissions mais ce code lance aussi une exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FileIOPermission ioPermission = new FileIOPermission(FileIOPermissionAccess.PathDiscovery, "c:\\folder\\subfolder");
    ioPermission.Demand();
    Cependant rien n'empêche quelqu'un de modifier les droits d'accès entre le moment où la vérification est faite et le moment où l'action est fait. Il faut donc quand même gérer l'exception.

  3. #3
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Tout à fait ce que je me disais (vu que j'avais cliquer sur le bouton confirmer et qu'après cela passait) mais je trouvais juste mon système pas trop propre. Je fais rajouté le test que tu me proposes
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  4. #4
    Membre confirmé
    Femme Profil pro
    Etudiante en Développement
    Inscrit en
    Avril 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en Développement
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 106
    Par défaut
    As-tu regardé du côté de Directory.GetAccessControl() et File.GetAccessControl() ?

    Cela pourra peut-être t'aider aussi

Discussions similaires

  1. L'accès au chemin d'accès est refusé
    Par Arenji dans le forum ASP.NET
    Réponses: 12
    Dernier message: 27/09/2018, 11h50
  2. [PowerShell] Copy-Item : L'accès au chemin d'accès est refusé.
    Par torrgovin dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 27/03/2012, 18h05
  3. XMLWriter : L'accès au chemin d'accès est refusé
    Par Invité dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/07/2009, 10h10
  4. L'accès au chemin d'accès est refusé
    Par amirad dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/05/2009, 10h49

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