web-dev-qa-db-fra.com

Comment obtenir le répertoire Windows actuel, par exemple C:\en C #

Comme le titre l'indique, comment obtenir le lecteur actuel du système d'exploitation, afin de l'ajouter dans une chaîne, par exemple: 

MessageBox.Show(C:\ + "My Documents");

Merci

22
Miles

Ajouter une référence système IO,

using System IO;

Ensuite, écrivez votre code comme ceci;

string path = Path.GetPathRoot(Environment.SystemDirectory);

Ce code définira path sur la lettre de lecteur local indiquant que Windows a été installé. Vous pouvez utiliser la variable ci-dessus pour d'autres modifications.

par exemple:

MessageBox.Show("Windows is installed to Drive " + path);

enter image description here

52
Otávio Décio

Lorsque vous recherchez un dossier spécifique (tel que Mes documents), n'utilisez pas de chemin codé en dur. Les chemins d'accès peuvent changer de version à version de Windows (C:\Documents and Settings\ vs C:\Users\) et ont été localisés dans des versions plus anciennes (C:\Users\user\Documents\ vs C:\Usuarios\user\Documentos\). Selon la configuration, les profils utilisateur peuvent se trouver sur un lecteur différent de Windows. Windows peut ne pas être installé où vous vous attendez (il ne doit pas nécessairement être en \Windows\). Il y a probablement d'autres cas dont je ne suis pas au courant.

Au lieu de cela, utilisez l'API Shell (SHGetKnownFolderPath) pour obtenir le chemin d'accès réel. En .NET, ces valeurs sont facilement obtenues à partir de Environment.GetFolderPath . Si vous recherchez le dossier Mes documents de l'utilisateur:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Liste complète des dossiers spéciaux

9
josh3736

Vous pouvez utiliser Environment.CurrentDirectory pour obtenir le répertoire actuel. Environment.SystemDirectory vous donnera le dossier système (ex: C:\Windows\System32). Path.GetPathRoot vous donnera la racine du chemin:

var rootOfCurrentPath = Path.GetPathRoot(Environment.CurrentDirectory);
var driveWhereWindowsIsInstalled = Path.GetPathRoot(Environment.SystemDirectory);
6
Reed Copsey

Si cela ne vous dérange pas d'analyser un peu: http://msdn.Microsoft.com/en-us/library/system.environment.systemdirectory.aspx

Environment.systemdirectory renvoie le répertoire en cours.

0
mydogisbox