Bonjour à tous,
Comme petit exercice je fais un parcours de mon arborescence de fichier en recursif avec DirectoryInfo.
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).
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; } } }
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 :
Quelqu'un a t'il une idée pour rendre cela plus propre ?
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; }
Partager