Wie kann ich das aktuelle Benutzerverzeichnis erhalten?
-
16-09-2019 - |
Frage
Verwenden Sie dies:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Ich bekomme diese Ausgabe:
"C:\\Documents and Settings\\[USER]\\Application Data"
Wie kann ich das Root -Verzeichnis aller Benutzer bekommen? dh:
"C:\\Documents and Settings\\[USER]\\"
Lösung
Möglicherweise ist dies eine gute Lösung: Berücksichtigung, ob es sich um Vista/Win7 oder XP handelt und ohne Umgebungsvariablen: Umgebungsvariablen:
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 zwar viel klarer.
Andere Tipps
Versuchen:
System.Environment.GetEnvironmentVariable("USERPROFILE");
Bearbeiten:
Wenn die Version von .NET, die Sie verwenden, 4 oder höher ist, können Sie die verwenden Environment.SpecialFolder
Aufzählung:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Sie können den UserProfile -Pfad mit genau folgendermaßen erhalten:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Auch sehr hilfreich, während er die untersucht Environment.SpecialFolder
Auflauf. Verwenden Sie Linqpad oder erstellen Sie eine Lösung und führen Sie diesen 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())
Dies ist das Ergebnis auf meiner Maschine:
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
Übrigens. "Fisch" ist die ersten 5 Buchstaben meines Nachnamens (und ist deutsch für "Fisch"). Dies ist der Benutzername, der bei der Anmeldung mit einem Microsoft -Konto zugewiesen wird.
Environment.GetEnvironmentVariable("userprofile")
Der Versuch, von einem benannten SpecialFolder zu navigieren, ist anfällig für Probleme. Es gibt viele Gründe, warum die Ordner nicht dort sind, wo Sie sie erwarten. Benutzer können sie selbst bewegen, GPO kann sie, Ordnerumleitung auf UNC -Pfade usw. verschieben, usw.
Verwendung der Umgebungsvariable Für die Benutzerprofile sollte ein dieser möglichen Probleme widerspiegeln.
Versuchen:
System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/
Das Spielen mit Umgebungsvariablen oder hartcodierten übergeordneten Ordner-Offsets ist nie eine gute Idee, wenn es eine API gibt, die die gewünschten Informationen erhalten, rufen Sie an. SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
$env:USERPROFILE = "C:\\Documents and Settings\\[USER]\\"
Sie können den folgenden Code verwenden:
if(Platform.Equals("WinCE"))
{
m_CurrentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
}
else if(Platform.Equals("Win32NT"))
{
m_CurrentPath = Directory.GetCurrentDirectory();
}
Weitere Informationen Siehe: Holen Sie sich den aktuellen Verzeichnispfad in WinXP und mit C# zusammen.