2009-01-31 7 views
12

Es gibt mehrere Möglichkeiten, den Pfad zur Anwendungsdatenverzeichnis erhalten:Die beste Methode, um den Pfad zum Verzeichnis "Anwendungsdaten" zu erhalten?

  • die %APPDATA% Umgebungsvariable
  • Aufruf SHGetFolderPath mit CSIDL_APPDATA

mit Was ist der beste Weg, um den Weg zu bekommen aus einem Programm heraus? Gibt es irgendwelche Probleme, wenn ich die Umgebungsvariable verwende?

Welche Methode ist bei XP, Vista und zukünftigen Versionen am sichersten?

Antwort

12

Ich würde vorschlagen, dass Anruf SHGetFolderPath() ist die am besten geeignete und tragbare Methode; Die Alternativen wie das Lesen einer Umgebungsvariablen oder (schlimmer noch) der Versuch, sie aus der Registry zu extrahieren, werden Sie wahrscheinlich in Zukunft stolpern.

Raymond Chen has an article erklären, warum das Ziehen solcher Pfade aus der Registrierung eine schlechte Idee ist.

+1

ich den Artikel gelesen, und ich habe mich vorher genau, was der Artikel mir gesagt, * nicht * zu tun :) –

0

Wenn Sie in .NET Programmierung können Sie verwenden:

string appDataPath = Environment.SpecialFolder.ApplicationData; 
+0

SpecialFolder.ApplicationData ist eine Enumeration, kein Pfad. Verwenden Sie Environment.GetFolderPath, wie in @ jMMs Antwort gezeigt – JulianM

0

Ein wichtiger Unterschied in Python: Bei Unicode-Dateipfade ctypes.windll.shell32.SHGetFolderPathW einen Unicode-String zurückgibt, während os.environ['APPDATA'] ein Byte-String zurückgibt.

12
string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Sie müssen die GetFolderPath Methode verwenden, um den tatsächlichen Pfad zu erhalten, wie Environment.SpecialFolder.ApplicationData nur eine Enumeration ist.

0

Falls jemand frage mich, in Ruby der Befehl wie das aussehen würde folgende:

appDataPath = ENV['APPDATA'] 
Verwandte Themen