webentwicklung-frage-antwort-db.com.de

Wie kann ich das aktuelle Benutzerverzeichnis abrufen?

Mit diesem:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Ich bekomme diese Ausgabe:

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

Wie kann ich das Stammverzeichnis aller Benutzer abrufen? d. h .:

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

Möglicherweise ist dies eine gute Lösung: Berücksichtigen Sie, ob dies Vista/Win7 oder XP und ohne Verwendung von Umgebungsvariablen ist:

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

Die Verwendung der Umgebungsvariablen ist jedoch viel klarer.

44
Anton Kolesov

Versuchen:

System.Environment.GetEnvironmentVariable("USERPROFILE");

Bearbeiten:

Wenn die von Ihnen verwendete .NET-Version 4 oder höher ist, können Sie das Environment.SpecialFolder Aufzählung:

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

Sie können den UserProfile-Pfad folgendermaßen abrufen:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

18
zionyx

Auch sehr hilfreich bei der Untersuchung der Environment.SpecialFolder enum. Verwenden Sie LINQPad oder erstellen Sie eine Lösung und führen Sie den folgenden Code aus:

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

Dies ist das Ergebnis auf meinem Computer:

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" sind die ersten 5 Buchstaben meines Nachnamens (und ist deutsch für "Fisch"). Dies ist der Benutzername, der bei der Anmeldung mit einem Microsoft-Konto vergeben wird.

7
bytecode77
Environment.GetEnvironmentVariable("userprofile")

Der Versuch, von einem benannten SpecialFolder nach oben zu navigieren, ist problematisch. Es gibt viele Gründe, warum die Ordner nicht dort liegen, wo Sie sie erwarten - Benutzer können sie selbst verschieben, GPO können sie verschieben, Ordner auf UNC-Pfade umleiten usw.

Die Verwendung der mgebungsvariable für das Benutzerprofil sollte eines dieser möglichen Probleme widerspiegeln.

4
Scott Ivey

Versuchen:

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

Es ist keine gute Idee, mit Umgebungsvariablen oder fest codierten Offsets für übergeordnete Ordner zu experimentieren, wenn es eine API gibt, um die gewünschten Informationen abzurufen. Rufen Sie SHGetSpecialFolderPath(...,CSIDL_PROFILE,...) auf

1
Anders