Verwenden Sie diese:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Ich bekomme diese Ausgabe:
"C:\\Documents and Settings\\[USER]\\Application Data"
Wie kann ich das Stammverzeichnis aller Benutzer erhalten? dh:
"C:\\Documents and Settings\\[USER]\\"
Antworten:
Möglicherweise ist dies eine gute Lösung: Berücksichtigen Sie, ob dies Vista / Win7 oder XP ist und ohne Umgebungsvariablen:
Die Verwendung der Umgebungsvariablen ist jedoch viel klarer.
quelle
Versuchen:
Bearbeiten:
Wenn die von Ihnen verwendete .NET-Version 4 oder höher ist, können Sie die
Environment.SpecialFolder
Aufzählung verwenden:quelle
Sie können den UserProfile-Pfad folgendermaßen abrufen:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
quelle
Auch sehr hilfreich bei der Untersuchung der
Environment.SpecialFolder
Aufzählung. Verwenden Sie LINQPad oder erstellen Sie eine Lösung und führen Sie diesen Code aus:Dies ist das Ergebnis auf meinem Computer:
("fisch" sind die ersten 5 Buchstaben meines Nachnamens. Dies ist der Benutzername, der bei der Anmeldung mit einem Microsoft-Konto vergeben wird.)
quelle
Der Versuch, von einem benannten SpecialFolder nach oben zu navigieren, ist problematisch. Es gibt viele Gründe, warum die Ordner nicht dort sind, wo Sie sie erwarten - Benutzer können sie selbst verschieben, Gruppenrichtlinienobjekt kann sie verschieben, Ordnerumleitung zu UNC-Pfaden usw.
Die Verwendung der Umgebungsvariablen für das Benutzerprofil sollte eines dieser möglichen Probleme widerspiegeln.
quelle
Versuchen:
quelle
Das Herumspielen mit Umgebungsvariablen oder fest codierten Offsets für übergeordnete Ordner ist niemals eine gute Idee, wenn es eine API gibt, mit der Sie die gewünschten Informationen abrufen können
SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
quelle
quelle
Sie können den folgenden Code verwenden:
Weitere Informationen finden Sie unter: Aktuellen Verzeichnispfad in WinXP und WinCE mit C # abrufen
quelle