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

Windows Forms Discussion :

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


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Coach formateur en logiciel de gestion
    Inscrit en
    Octobre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach formateur en logiciel de gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 15
    Par défaut L'accès au chemin d'accès 'C:\Documents and Settings' est refusé.
    Bonjour à tous,

    Dans le cadre d'un projet, je souhaite lancer une recherche de fichier d'une extension (.txt par exemple) sur l'ensemble du disque C:\
    Comme beaucoup d'autres avant moi, je rencontre une difficulté liée au répertoire "Documents and Settings".
    J'ai fouillé Internet (ce forum et d'autres, Youtube ...) sans trouver de solution à ma problématique.

    Dans les faits, je clique sur un bouton, la recherche se lance mais le programme s'arrête lorsqu'il arrive à C:\Documents and Settings.

    Je voudrais que le programme puisse continuer la recherche après cette erreur ou carrément, en ignorant ce satané répertoire.

    J'ai essayé avec un Try / Catch mais bon, ça m'affiche juste l'erreur dans un MessageBox par exemple et le programme stoppe la recherche.
    J'ai pensé à une boucle While ou for ou encore foreach. De ce que j'ai pu comprendre de ces fonctions, elles ne me permettraient pas de résoudre ma problématique car il faut déterminer une fin de boucle et, de ce que j'ai pu voir, c'est un nombre qui peut être déterminé alors que moi, c'est la fin de la recherche... je ne sais pas si c'est clair ^^

    J'ai également pu voir comme solution : exécuter le programme en tant qu'admionistrateur. J'ai essayé et ça ne fonctionne pas.

    Est-ce que l'un de vous a une solution/piste à m'apporter ?

    Je vous remercie par avance.

    Nivek

  2. #2
    Membre actif
    Homme Profil pro
    Alternant
    Inscrit en
    Octobre 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 48
    Par défaut
    Tu as quel système d'exploitation parce que ça fait longtemps que j'ai plus vu ce dossier je ne l'ai pas personnellement sous Windows 10 donc je pense que ça doit être sous Windows 7

  3. #3
    Membre averti
    Homme Profil pro
    Coach formateur en logiciel de gestion
    Inscrit en
    Octobre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach formateur en logiciel de gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 15
    Par défaut
    Hello iR3SH,

    Il est vrai que j'ai oublié d'apporter les précisions de base quant aux versions utilisées.
    Je bosse sur Windows 10 Pro et Visual Studio 2019.

    De ce que j'ai pu trouver sur le net, le dossier Documents and settings est un "point de jonction". J'ignore ce que cela signifie. Depuis Win 7 me semble-t-il, ce dossier est là, dans C:\Users mais n'est visible par personne. Il ne s'affiche pas en activation l'affichage des fichiers et dossiers cachés, non accessible en indiquant le chemin dans la barre d'adresse de l'explorateur Windows... bref, un poison ce dossier

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Citation Envoyé par Nivek_33 Voir le message
    Hello iR3SH,

    Il est vrai que j'ai oublié d'apporter les précisions de base quant aux versions utilisées.
    Je bosse sur Windows 10 Pro et Visual Studio 2019.

    De ce que j'ai pu trouver sur le net, le dossier Documents and settings est un "point de jonction". J'ignore ce que cela signifie. Depuis Win 7 me semble-t-il, ce dossier est là, dans C:\Users mais n'est visible par personne. Il ne s'affiche pas en activation l'affichage des fichiers et dossiers cachés, non accessible en indiquant le chemin dans la barre d'adresse de l'explorateur Windows... bref, un poison ce dossier

    Dans Explorateurs de Fichiers(pan. de conf. windows 10) ->affichage -> décocher masquer les fichiers et dossiers cachés du système.
    Tu verras tout y compris Documents and Settings.
    En prime UNO tu peux cliquer sur l'icone et tu verras son contenu.
    Et en prime SECUNDO tu verras en haut de l'Explorateur le chemin réel ver lequel renvoie ce raccourci dit "point de jonction".

    Bon code...

  5. #5
    Membre averti
    Homme Profil pro
    Coach formateur en logiciel de gestion
    Inscrit en
    Octobre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach formateur en logiciel de gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 15
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    Dans Explorateurs de Fichiers(pan. de conf. windows 10) ->affichage -> décocher masquer les fichiers et dossiers cachés du système.
    Tu verras tout y compris Documents and Settings.
    En prime UNO tu peux cliquer sur l'icone et tu verras son contenu.
    Et en prime SECUNDO tu verras en haut de l'Explorateur le chemin réel ver lequel renvoie ce raccourci dit "point de jonction".

    Bon code...

    Bonjour MABROUKI,
    Merci pour la manip mais je sais comment afficher les fichiers cachés sur un ordi. Je ne sais pas comment tu fais pour voir "Documents and Settings" sur un Windows 10 par contre... y a que toi qui l'as non ?
    Autre point, je ne vois pas comment afficher les dossiers cachés va résoudre mon problème de droits d'accès.
    Peut-être as-tu plus de précisions à m'apporter ?

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 921
    Par défaut
    Directory.GetDirectories sert à rechercher des répertoires et pas des fichiers.
    Là tu essaie de trouver des DOSSIERS avec une extension.

    Comme je l'ai précisé l'unique moyen de faire ce que tu veux c'est de parcourir les répertoires de manière récursive.

    Ceci est une ébauche écrite à la va vite.
    Le but est que tu comprenne le principe et que tu l'améliores.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void SearchFiles(string currentDirectory, int currentDepth, int maxDepth, List<string> files)
    {
        files.AddRange(Directory.GetFiles(currentDirectory, "*.txt", SearchOption.TopDirectoryOnly));
     
        int depth = currentDepth + 1;
        if (depth <= maxDepth)
        {
            string[] directories = Directory.GetDirectories(currentDirectory);
            foreach (string directory in directories)
            {
                SearchFiles(directory, depth, maxDepth, files);
            }
        }
    }

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Citation Envoyé par Nivek_33 Voir le message
    Bonjour MABROUKI,
    Merci pour la manip mais je sais comment afficher les fichiers cachés sur un ordi. Je ne sais pas comment tu fais pour voir "Documents and Settings" sur un Windows 10 par contre... y a que toi qui l'as non ?
    Autre point, je ne vois pas comment afficher les dossiers cachés va résoudre mon problème de droits d'accès.
    Peut-être as-tu plus de précisions à m'apporter ?
    Pour les droits d'acces c'est de niveau Admin.
    Maintenant pour ton "je sais comment afficher les fichiers cachés sur un ordi",j'ai dit "décocher masquer les fichiers et dossiers cachés DU SYSTÈME" .car il y a 2 catégories de fichiers cachés
    - fichiers cachés tout court par exemple par l'user cachottier
    - fichiers cachés système par l'Admin de l'ordi.


    bon code...

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 921
    Par défaut
    Tu ne nous montre même pas comment tu recherches.
    C'est difficile de corriger quelque chose qu'on ne vois pas.

    ---------------------

    Informations complémentaires qui sont valables quel que soit ton code.
    Il est inutile de chercher des fichiers dans le répertoire 'C:\Users' sous Windows 10 car le système l'interdit.

    Néanmoins écrire ceci ne poste pas de problème, c'est juste que cela ne renvoie rien.
    String[] files = Directory.GetFiles(@"C:\Users\", "*.txt", SearchOption.TopDirectoryOnly);
    L'utilisation de SearchOption.AllDirectories te renverra également une erreur car il existe de nombreux répertoire que le système interdira de lire.

    Il n'y a donc pas de moyens vite fait de faire une recherche sur tout le disque C.
    Mais rien ne t'empêche de lister les fichier puis les répertoire de C:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String[] files = Directory.GetFiles(@"C:\", "*.txt", SearchOption.TopDirectoryOnly);
    Directory.GetDirectories(@"C:\");

    Ni ceux de C:\Users :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] files = Directory.GetFiles(@"C:\Users\", "*.txt", SearchOption.TopDirectoryOnly);
    Directory.GetDirectories(@"C:\Users\");


    Donc avec un procédure récursive et une exception interceptée au bon endroit, tu devrais pouvoir parcourir ton disque petit à petit.

  9. #9
    Membre averti
    Homme Profil pro
    Coach formateur en logiciel de gestion
    Inscrit en
    Octobre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach formateur en logiciel de gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 15
    Par défaut
    Hello @popo

    Merci pour ta réponse.

    Voici mon code (recherche de dossiers et affichage du résultat dans une liste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String[] dossiers= Directory.GetDirectories(@"C:\ , "*.txt", SearchOption.AllDirectories);
     
    try
                    {
                        foreach (String MesDossiers in dossiers)
                        checkedListBoxFichiers.Items.Add(MesDossiers);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Erreur c:");
                    }
    Ce code me renvoie l'erreur suivante :
    System.UnauthorizedAccessException*: 'L'accès au chemin d'accès 'C:\Documents and Settings' est refusé.'
    A la suite de ta réponse, j'ai essayé avec SearchOption.TopDirectoryOnly.
    La recherche ne se lance pas.

    Mon soucis, je pense, ce situe dans ta dernière information :
    Donc avec un procédure récursive et une exception interceptée au bon endroit, tu devrais pouvoir parcourir ton disque petit à petit.
    Je ne sais pas comment faire. Comment choisir à quel moment (endroit) l'exception va être interceptée ? Tout ce que je sais à ce sujet est dans le code que j'ai donné.

  10. #10
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Citation Envoyé par Nivek_33 Voir le message
    Bonjour à tous,

    Dans le cadre d'un projet, je souhaite lancer une recherche de fichier d'une extension (.txt par exemple) sur l'ensemble du disque C:\
    Comme beaucoup d'autres avant moi, je rencontre une difficulté liée au répertoire "Documents and Settings".
    J'ai fouillé Internet (ce forum et d'autres, Youtube ...) sans trouver de solution à ma problématique.

    Dans les faits, je clique sur un bouton, la recherche se lance mais le programme s'arrête lorsqu'il arrive à C:\Documents and Settings.

    Je voudrais que le programme puisse continuer la recherche après cette erreur ou carrément, en ignorant ce satané répertoire.

    J'ai essayé avec un Try / Catch mais bon, ça m'affiche juste l'erreur dans un MessageBox par exemple et le programme stoppe la recherche.
    J'ai pensé à une boucle While ou for ou encore foreach. De ce que j'ai pu comprendre de ces fonctions, elles ne me permettraient pas de résoudre ma problématique car il faut déterminer une fin de boucle et, de ce que j'ai pu voir, c'est un nombre qui peut être déterminé alors que moi, c'est la fin de la recherche... je ne sais pas si c'est clair ^^

    J'ai également pu voir comme solution : exécuter le programme en tant qu'admionistrateur. J'ai essayé et ça ne fonctionne pas.

    Est-ce que l'un de vous a une solution/piste à m'apporter ?

    Je vous remercie par avance.

    Nivek
    Je reprends ton post initial & je cite le souci "Je voudrais que le programme puisse continuer la recherche après cette erreur ou carrément, en ignorant ce satané répertoire."

    le code exemple suivant répond à ce souci mais ,alas ,tu rencontreras d'autres sous dossiers "lucifériens ou diaboliques ou chaitaniques " qu'il faudra recenser à chaque exception & inclure dans le "if diabolique" pour les ignorer vertement.
    NB: le code est récursif car la structure de répertoire est récursive .
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.AccessControl;
    using System.IO;
     
    namespace ConsoleApplication2
    {
        class Program
        {
            private static string satanas =@"C:\Documents and Settings";
            static void Main(string[] args)
            {
                try
                {
     
                    string dirName = @"C:\" ;
     
     
                    DirectorySearch(dirName);
     
     
     
                    Console.WriteLine("Done.");
     
                }
                catch (Exception ex)
                {
     
                    Console.WriteLine(ex.Message); ;
                }
     
                Console.ReadKey();
            }
            private static void DirectorySearch(string dir)
            { 
     
                DirectoryInfo di   = new DirectoryInfo(dir);
     
                GetFileNames(dir);
                GetSubDirectoryNames(dir);
     
             }
     
            private static void GetSubDirectoryNames(string dir)
            {
                string[] subdirectoryEntries = Directory.GetDirectories(dir);
                // Loop through them to see if they have any other subdirectories  
                foreach(string subDir in subdirectoryEntries)
                {
                    DirectoryInfo di  = new DirectoryInfo(subDir);
                    Console.WriteLine(di.Name);
                    if (di.FullName == satanas  )
                    { 
                        Console.WriteLine(di.Attributes.ToString());
                        continue;
                    }
     
     
                    GetFileNames(subDir);
                    GetSubDirectoryNames(subDir);
                }
            }
     
            private static void GetFileNames(string dir)
            {
                string[] files  = Directory.GetFiles(dir, "*.*");
     
                //Loop through them to see files  
                foreach(string file in files)
                {    
                    FileInfo fi= new FileInfo(file);
                    Console.WriteLine("   "+fi.Name);
            
                }
            }
     
     
        }
    }
    Le diable en arabe se dit "chaitan".

    Quant à la manip manuelle déjà donnée ,elle peut être abrégé de la maniéré suivante .
    il suffit de taper dans la barre d'adresse de l'explorateur de fichier la commande "simplistic" suivante :
    "C:\Documents and Settings\%username%"
    pour contempler son contenu.
    bon code....

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/07/2019, 17h49
  2. C:\Documents and Settings\ accès refusé
    Par Triguns dans le forum VB.NET
    Réponses: 18
    Dernier message: 18/05/2011, 14h15
  3. Réponses: 15
    Dernier message: 21/04/2011, 19h19
  4. écrire dans le chemin C:\Documents and Settings\
    Par nadjibo dans le forum Débuter
    Réponses: 5
    Dernier message: 09/09/2009, 11h10
  5. Réponses: 2
    Dernier message: 05/05/2006, 19h09

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