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]\\"
War es hilfreich?

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())

Folder Paths

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top