web-dev-qa-db-fra.com

Comment puis-je obtenir le répertoire utilisateur actuel?

En utilisant ceci:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Je reçois cette sortie:

"C:\\Documents and Settings\\[USER]\\Application Data"

Comment puis-je obtenir le répertoire racine de tous les utilisateurs? c'est à dire.:

"C:\\Documents and Settings\\[USER]\\"
90
juan

Peut-être que ce sera une bonne solution: prendre en compte s'il s'agit de Vista/Win7 ou XP et sans utiliser de variables d'environnement:

string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName;
if ( Environment.OSVersion.Version.Major >= 6 ) {
    path = Directory.GetParent(path).ToString();
}

Bien que l'utilisation de la variable d'environnement soit beaucoup plus claire.

44
Anton Kolesov

Essayer:

System.Environment.GetEnvironmentVariable("USERPROFILE");

Modifier:

Si la version de .NET que vous utilisez est une version 4 ou supérieure, vous pouvez utiliser le fichier Environment.SpecialFolder énumération:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
147
Thomas

Vous pouvez obtenir le chemin UserProfile avec juste ceci:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

18
zionyx

Aussi très utile, tout en enquêtant sur le Environment.SpecialFolder enum. Utilisez LINQPad ou créez une solution et exécutez ce code:

Enum.GetValues(typeof(Environment.SpecialFolder))
    .Cast<Environment.SpecialFolder>()
    .Select(specialFolder => new
    {
        Name = specialFolder.ToString(),
        Path = Environment.GetFolderPath(specialFolder)
    })
    .OrderBy(item => item.Path.ToLower())

Folder Paths

Voici le résultat sur ma machine:

MyComputer
LocalizedResources
CommonOemLinks
ProgramFiles            C:\Program Files (x86) 
ProgramFilesX86         C:\Program Files (x86) 
CommonProgramFiles      C:\Program Files (x86)\Common Files 
CommonProgramFilesX86   C:\Program Files (x86)\Common Files 
CommonApplicationData   C:\ProgramData 
CommonStartMenu         C:\ProgramData\Microsoft\Windows\Start Menu 
CommonPrograms          C:\ProgramData\Microsoft\Windows\Start Menu\Programs 
CommonAdminTools        C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
CommonStartup           C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 
CommonTemplates         C:\ProgramData\Microsoft\Windows\Templates 
UserProfile             C:\Users\fisch 
LocalApplicationData    C:\Users\fisch\AppData\Local 
CDBurning               C:\Users\fisch\AppData\Local\Microsoft\Windows\Burn\Burn 
History                 C:\Users\fisch\AppData\Local\Microsoft\Windows\History 
InternetCache           C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCache 
Cookies                 C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCookies 
ApplicationData         C:\Users\fisch\AppData\Roaming 
NetworkShortcuts        C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Network Shortcuts 
PrinterShortcuts        C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Printer Shortcuts 
Recent                  C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Recent 
SendTo                  C:\Users\fisch\AppData\Roaming\Microsoft\Windows\SendTo 
StartMenu               C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu 
Programs                C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 
AdminTools              C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
Startup                 C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 
Templates               C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Templates 
Desktop                 C:\Users\fisch\Desktop 
DesktopDirectory        C:\Users\fisch\Desktop 
Favorites               C:\Users\fisch\Favorites 
MyMusic                 C:\Users\fisch\Music 
MyDocuments             C:\Users\fisch\OneDrive\Documents 
MyDocuments             C:\Users\fisch\OneDrive\Documents 
MyPictures              C:\Users\fisch\OneDrive\Pictures 
MyVideos                C:\Users\fisch\Videos 
CommonDesktopDirectory  C:\Users\Public\Desktop 
CommonDocuments         C:\Users\Public\Documents 
CommonMusic             C:\Users\Public\Music 
CommonPictures          C:\Users\Public\Pictures 
CommonVideos            C:\Users\Public\Videos 
Windows                 C:\Windows 
Fonts                   C:\Windows\Fonts 
Resources               C:\Windows\resources 
System                  C:\Windows\system32 
SystemX86               C:\Windows\SysWoW64 

Btw. "fisch" correspond aux 5 premières lettres de mon nom de famille (et signifie "poisson" en allemand). C'est le nom d'utilisateur attribué lors de la connexion à un compte Microsoft.

7
bytecode77
Environment.GetEnvironmentVariable("userprofile")

Tenter de naviguer à partir d'un dossier spécial nommé est sujet à des problèmes. Il existe de nombreuses raisons pour lesquelles les dossiers ne seront pas là où vous les attendez - les utilisateurs peuvent les déplacer eux-mêmes, GPO peut les déplacer, la redirection de dossiers vers des chemins UNC, etc.

L'utilisation de variable d'environnement pour le profil utilisateur devrait refléter l'un de ces problèmes possibles.

4
Scott Ivey

Essayer:

System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/
3
Jay Riggs

Il n'est jamais bon de perdre son temps avec des variables d'environnement ou des décalages de dossier parent codés en dur lorsqu'il existe une API pour obtenir les informations souhaitées, appelez SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)

1
Anders