Soweit ich weiß, sollten Sie die Environment.GetFolderPath
Methode verwenden, damit Sie betriebssystemunabhängigen Code haben ...
Windows XP verwendet C:\Documents and Settings\
. Windows Vista verwendet C:\ProgramData
und C:\Users
.
Ich verwende den folgenden Code auf einem Windows Vista-Computer und er gibt ein C:\Documents and Settings\
Verzeichnis zurück, anstatt C:\ProgramData
wie es sollte ... Irgendwelche Ideen?
string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
try
{
File.CreateText(
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
"\\mycompany\\uid");
log.Debug("Created file successfully");
}
catch (Exception ex)
{
log.Error("Unable to create the uid file: ", ex);
}
Antworten:
Mein Installationsprogramm hat eine log.txt-Datei kopiert, die auf einem XP-Computer generiert wurde. Ich habe mir diese Protokolldatei angesehen und gedacht, sie wurde unter Vista generiert. Sobald ich meine log4net-Konfiguration auf "Vista-kompatibel" eingestellt habe. Environment.GetFolderPath gab die erwarteten Ergebnisse zurück. Deshalb schließe ich diesen Beitrag.
Die folgende SpecialFolder-Pfadreferenz kann hilfreich sein:
Ausgabe unter Windows Server 2003:
Ausgabe unter Vista:
quelle
Environment.SpecialFolder.CommonApplicationData
kehrt aus irgendeinem Grund zurückCommonApplicationData
. und erstellt daher die Ordner im App-Pfad selbstEnvironment.SpecialFolder.CommonApplicationData
ist eine Aufzählung; Sie müssen anrufenEnvironment.GetFolderPath()
, um den Pfad zurückzugeben, zEnvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
.Ausgabe unter Ubuntu 9.10 -> Ubuntu 12.04 mit Mono 2.10.8.1:
Ausgabe unter Ubuntu 16.04 mit Mono 4.2.1
Dabei ist $ USER der aktuelle Benutzer
Ausgabe unter Ubuntu 16.04 mit Dotnet Core (3.0.100)
Ausgabe auf Android 6 mit Xamarin 7.2
Wobei $ APPNAME der Name Ihrer Xamarin-Anwendung ist (z. B. MyApp.Droid)
Ausgabe unter iOS Simulator 10.3 mit Xamarin 7.2
Wobei $ DEVICEGUID die Simulator-GUID ist (abhängig vom ausgewählten Simulator)
Ausgabe auf dem iPad 10.3 mit Xamarin 7.2
Ausgabe auf dem iPad 13.3 mit Xamarin 16.4
quelle
Ausgabe unter Windows 10
Code-Snippet, wenn Sie Ihr eigenes protokollieren möchten
quelle
Ausgabe unter Windows 7 (64-Bit)
Ausgabe unter Windows XP
quelle