Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1957 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Directory.Exist () et navigation dans l'arborescence, comment faire?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Directory.Exist () et navigation dans l'arborescence, comment faire?

n°1817450
burn2
ça rox du poney
Posté le 27-11-2008 à 09:44:56  profilanswer
 

Bonjour à tous et toutes, je viens demandé votre aide pour un ptit problème qui me turlupine.
Je vous explique, je voudrais tester si un répertoire existe avant de m'y placer dedans.
Mon logiciel tourne à un endroit particulier et le répertoire ou je voudrais être n'est bien sûr pas un sous dossier à côté du logiciel.

 

Je fais donc un Directory.exist("C:\\FTP\\" ) (ou même Directory.exist("C:\\FTP" ) , un dossier qui existe bien sur C: mais il me répond que ce dossier n'existe pas.  :sweat:

 

Si je ne teste pas exprès et que j'essaie de m'y placer, il lève une exception et en fait je me rend compte qu'il fait:

 

...\Chemin_vers_mon_application\C:\FTP

 

:/

 

On fait comment donc pour tester plus haut dans l'arborescence (pas question de faire des .. pour remonter je ne sais pas ou sera l'application)??? C'est bizarre que le .net ne sache pas interpréter un chemin absolue et pas relatif. :/


Message édité par burn2 le 27-11-2008 à 09:52:06

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
mood
Publicité
Posté le 27-11-2008 à 09:44:56  profilanswer
 

n°1817500
burn2
ça rox du poney
Posté le 27-11-2008 à 11:11:37  profilanswer
 

Hum à priori faudrait un @
http://msdn.microsoft.com/en-us/li [...] ctory.aspx

 

Moué ça marche pas plus, si je fais un directory.exist avec le @ devant ça ne marche pas plus...

 

EDIT: je ne comprends vraiment pas. :/
Je fais précisément ça:
http://msdn.microsoft.com/en-us/li [...] ctory.aspx

 

Et chezmoiçamarchepas.com :(
Pourtant je suis sûr du chemin d'accès puisque je vais dans le dossier depuis l'explorateur et je le récupère avant de le coller. :( Mais qu'est ce qui bloque :'(


Message édité par burn2 le 27-11-2008 à 11:28:37

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817516
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 11:38:55  profilanswer
 

et avec "file:///c:/FTP" ?
 
ça change rien?


Message édité par Marty_McFly le 27-11-2008 à 11:39:25

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817518
burn2
ça rox du poney
Posté le 27-11-2008 à 11:39:24  profilanswer
 

Pour un répertoire? :??:

 

EDIT: Testé non ça change rien :'(


Message édité par burn2 le 27-11-2008 à 11:40:15

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817519
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 11:39:35  profilanswer
 

ah... le con :(
edit1: remarque, y'a pas de raisons que ça fonctionne pas: si tu tappes  
file:///c:/FTP dans la barre d'adresse de l'explorer... ça t'affiche le dossier
edit2: merde :(


Message édité par Marty_McFly le 27-11-2008 à 11:40:59

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817521
burn2
ça rox du poney
Posté le 27-11-2008 à 11:41:12  profilanswer
 

Ben j'ai testé dans le programme ça ne marche pas :(
affiche_Console(Directory.Exists(@"file:///C:\FTP" ).ToString()); ==> m'affiche false :'(

 

Mon programme est éxécuté depuis T:/ ça ne pose pas de problème que je sache non plus? Si c'était convenablement bien construit...
Edit j'ai testé avec un répertoire qui existe dans T c'est pareil...


Message édité par burn2 le 27-11-2008 à 11:43:00

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817559
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 12:01:00  profilanswer
 

c'est pas un probleme de droit? peut etre que le programme ne prend pas l'utilisateur courant comme identité, et que cette identité n'a pas les droit sur c: ? ça m'est déjà arrivé sur des appli web (l'identité monlogin\ASPNET n'avait pas d'autorisations...)


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817563
burn2
ça rox du poney
Posté le 27-11-2008 à 12:03:18  profilanswer
 

Ben c'est pas ce qu'il me dit en tout cas. :/ Je me prends déjà la tête avec les truc de sécurité sur Vista, mais là j'ai mis programme de confiance dans le projet et droit de tout exécuter.
Et je viens de tester: Exécuté en temps qu'administrateur, idem ça me répond false.

 

:( Je vois vraiment pas quoi faire.

 


Edit: Merci déjà pour tes débuts d'aide.


Message édité par burn2 le 27-11-2008 à 12:10:34

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817572
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 12:13:00  profilanswer
 

tu as essayé dans un autre appli? genre, histoire de voir si ça se comporte comme ça pour tous tes programmes, ou pas
 
edit: pas de probleme, en ce moment je glande au taf :p


Message édité par Marty_McFly le 27-11-2008 à 12:13:40

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817578
burn2
ça rox du poney
Posté le 27-11-2008 à 12:19:05  profilanswer
 

Ben je vois pas trop ce que ça changera. :/
Tous mes programmes sont développés en C# avec visual studio 2008 express, avec .net 3.5 d'installé et toutes les mises à jours. :/
Je peux rien faire de plus :( Et la seule info que j'ai c'est que pour lui le répertoire n'existe pas.
Mais il me semble que si je fais setcurrentDirectory en forçant il me lève une exception en me disant que blabla répertoire n'existe pas et le chemin, c'est "Le_chemin_de_mon_appli\ce_que_je_mets"
:/


---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
mood
Publicité
Posté le 27-11-2008 à 12:19:05  profilanswer
 

n°1817581
burn2
ça rox du poney
Posté le 27-11-2008 à 12:21:20  profilanswer
 

Alors là je ne comprends plus rien! :??:
Si je fais un Directory.SetCurrentDirectory(@"C:\FTP" );

 


EDIT: en gros sans le set:

Citation :


27/11/2008   12:22:34]  Traitement de la tâche: test
[27/11/2008   12:22:34]  C:\\
[27/11/2008   12:22:34]  False
[27/11/2008   12:22:34]  /!\Le répertoire local n'existe pas!/!\

 

La même chose mais avec le set:

Citation :


27/11/2008   12:23:16]  Traitement de la tâche: test
[27/11/2008   12:23:16]  Erreur détectée lors du téléchargement: Échec de la demande d'autorisation de type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.


Edit: ah non c'est normal c'est moi qui est mis ce message d'erreur lors du catch.
Donc en gros le Set ne marche pas.

 


L'erreur est bien une question de droit encore:
" Échec de la demande d'autorisation de type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'"
Je fais comment moi. :/ C'est vraiment le bordel vista niveau droits :'(


Message édité par burn2 le 27-11-2008 à 12:25:53

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817594
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 12:38:53  profilanswer
 

franchement, avec vista... je sais pas trop :(
désolé


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817597
burn2
ça rox du poney
Posté le 27-11-2008 à 12:40:23  profilanswer
 

Je vais voir ce qu'il me dit sous XP.
Edit: MÊme message...


Message édité par burn2 le 27-11-2008 à 12:41:49

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817601
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 12:49:12  profilanswer
 

là ça devient louche.
regarde les autorisations sur le répertoire c:FTP (voire sur C:), et regarde qui 'pilote' ton appli (System.Security.WindowsIdentity.GetCurrent() ... ou un truc dans le genre), c'est la seule piste que j'entrevois :(


Message édité par Marty_McFly le 27-11-2008 à 12:49:49

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1817649
burn2
ça rox du poney
Posté le 27-11-2008 à 13:53:48  profilanswer
 

Je vais regarder.  
Par contre si j'exécute mon application depuis visualStudio en mode débug (F5 tout cours quoi) ça marche. Mais dès que je fais CTRL+F5 donc mode normal ou que j'exécute directement l'exécutable paf. :/


---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817653
burn2
ça rox du poney
Posté le 27-11-2008 à 13:55:41  profilanswer
 

System.Security.WindowsIdentity.GetCurrent() y a pas :/

 

EDIT: j'ai trouvé comment faire.
EDIT2: je peux pas le faire je me prends la même exception quand je l'éxécute normalement sans débugage. :(


Message édité par burn2 le 27-11-2008 à 14:08:50

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1817831
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-11-2008 à 16:36:46  profilanswer
 

au final, c'est pas System.Security c'est System.Principal :( désolé.
Franchement, je n'ai aucune idée de là ou ça peux venir. Je ne suis pas assez calé sur les différences que peuvent engendrer une compilation en debug par rapport a release. Surtout à propos de gestion de droits. Peut etre que, lorsque tu lances en mode debug, le programme hérite des memes droits que VS, alors qu'en le lançant en release, il en prend un autre, avec moins d'autorisations. Enfin je dis ça... j'en sais absolument rien !


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1818004
burn2
ça rox du poney
Posté le 27-11-2008 à 18:59:25  profilanswer
 

Si ça doit être ça mais je comprends pas pourquoi en exécutant en temps qu'administrateur ça ne passe pas. :(
Merci pour ton aide. ;)


Message édité par burn2 le 27-11-2008 à 18:59:34

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1818166
burn2
ça rox du poney
Posté le 28-11-2008 à 09:19:56  profilanswer
 

Mais le truc c'est que même en exécutant mon programme compilé depuis vista, depuis un compte administrateur sous xp, ça ne passe toujours pas. :/


Message édité par burn2 le 28-11-2008 à 09:20:10

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1818457
burn2
ça rox du poney
Posté le 28-11-2008 à 15:34:02  profilanswer
 

Risque pas de marcher ton code avec string et existe dans le try. :D
Enfin bon en arrangeant ce petit détail j'ai droit à:

Citation :


erreur création répertoire : Échec de la demande d'autorisation de type 'System.
Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutra
l, PublicKeyToken=b77a5c561934e089'.


Sans rajouter les droits dans le projet. Bon maintenant je les rajoutes.

 

En mode débug:
Rien d'affiché, en mode exécution normal ==> même problème que plus haut.
Les droits ne sont pas rajouté au programme en soit, c'est là que je ne comprends pas. :/


Message édité par burn2 le 28-11-2008 à 15:36:49

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1818482
burn2
ça rox du poney
Posté le 28-11-2008 à 15:57:30  profilanswer
 

Ah effectivement j'avais déjà eu ce genre de problème, ça doit effectivement venir de ça. Mais reste à voir si depuis C:, je peux écrire dans T et autre lecteur virtuel :/
 
 
Bon je viens de tester, effectivement c'était ça!
Et bien vraiment super pratique ce truc. Je capte pas trop pourquoi ça fait quoi :/ Me reste plus qu'a espérer que je puisse quand même écrire dans T ou tout lecteur partagé....
 
Merci beaucoup pour ton aide!
 
Et merci aussi à Marty_McFly. :)


---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Directory.Exist () et navigation dans l'arborescence, comment faire?

 

Sujets relatifs
chacher son arborescence[Résolu]-[BATCH DOS] modification Mot De Passe dans l'Active Directory
[Batch] Deux if exist marche pas bien[Divers] Changer Mot de Passe Active Directory par PHP ou ASP
[JSF] probleme de navigation à travers une liste[PHP] Authentification Active Directory + LDAP
[LDAP] Sun One Directory : coupure "sauvage"[ACTIVE DIRECTORY - VBS] Ajout d'un utilisateur a un Groupe
Navigation en ajax dans un catalogueBD XML eXist et XQuery
Plus de sujets relatifs à : Directory.Exist () et navigation dans l'arborescence, comment faire?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR