120 votes

Obtenir le chemin du répertoire personnel en C #?

Ok, j'ai vérifié l'Environnement.SpecialFolder, mais il n'y a rien là pour cela.

Je veux obtenir le répertoire home de l'utilisateur courant dans C#. (par exemple, c:\documents and settings\user sous XP, c:\users\user sous Vista, et /home/user sous Unix.)

Je sais que je peux lire de l'environnement de variables pour le savoir, mais je veux le faire en une croix-plate-forme.

Est il possible que je peux faire avec .NET (en utilisant de préférence mscorlib)?

Mise à JOUR: Ok, c'est le code que j'ai fini par utiliser:

string homePath = (Environment.OSVersion.Platform == PlatformID.Unix || 
                   Environment.OSVersion.Platform == PlatformID.MacOSX)
    ? Environment.GetEnvironmentVariable("HOME")
    : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");

129voto

James Points 259
 Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
 

Personnel est Mes documents (ou documents dans win7).

56voto

sigint Points 938

Environment.SpecialFolder.Personal ne renvoie pas le dossier de départ, mais le dossier Mes documents . Le moyen le plus sûr d'obtenir le dossier de base sur Win32 consiste à lire% HOMEDRIVE %% HOMEPATH%. La lecture des variables d'environnement est en fait très portable (sous Unix et Windows), donc je ne suis pas sûr de savoir pourquoi l'affiche voulait ne pas le faire.

Modifié pour ajouter: Pour le cross-plateforme (Windows / Unix) C #, je lirais $ HOME sous Unix et OSX et% HOMEDRIVE %% HOMEPATH% sous Windows.

16voto

Matthew Scharley Points 43262

Je crois que ce que vous cherchez, c'est:

 System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
 

Pour référence, il est en fait contenu dans mscorlib .

4voto

AnthonyWJones Points 122520

En bout de ligne, la réponse est non. Il n'existe pas de méthode système simple dans .NET pour obtenir le répertoire de départ, de sorte que nous puissions nous attendre à une implémentation dans .NET sous Windows et dans Mono.

Vous devrez procéder à une détection du système d'exploitation et vous connecter à un code spécifique au système d'exploitation.

1voto

John D. Points 266

Lorsque vous parlez de multiplate-forme, quels autres systèmes d'exploitation devez-vous prendre en charge? Vous devrez peut-être effectuer une simple détection de système d'exploitation pour sélectionner la méthode de recherche du répertoire de base si vous utilisez un système d'exploitation autre que Windows.

Ce site Web semble être un moyen de faire ce dont vous avez besoin sous Windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X