2012-06-25 7 views
10

Meine App muss einige Dateien installieren, die von der Anwendung zur Laufzeit bearbeitet werden können. Install shield bietet einen Alias ​​[CommonAppDataFolder], der unter Vista und Windows 7 zu c: \ programData auflöst und auch unter Windows XP funktioniert. Gibt es eine Win32-Funktion, die einen ähnlichen Pfad zurückgibt?Win32-Funktion zum Abrufen des Pfads zu C: ProgramData

Vielleicht muss ich verschiedene Funktionen abhängig vom Betriebssystem aufrufen?

Antwort

18

SHGetFolderPath/SHGetSpecialFolderPath bekommen Sie das, mit CSIDL_COMMON_APPDATA Argument.

Siehe Codeschnipsel hier (unten): How to write a Windows XP Application that stores user and application data in the correct location by using Visual C++.

  • Windows XP: C: \ Dokumente und Einstellungen \ All Users \ Anwendungsdaten
  • Windows Vista: C: \ Program
  • Windows 7: C: \ Program

Siehe auch: CSIDL.

+0

Es scheint, dass CSIDL_COMMON_APPDATA aufgelöst wird zu: C: \ Dokumente und Einstellungen \ All Users \ Anwendungsdaten gibt es keine Möglichkeit, einen Pfad zu c: \ ProgramData zu bekommen? Ist dies nicht ein guter Ort, um diese Art von Dateien zu speichern? – Mike2012

+1

@ Mike2012, beide Pfade dienen dem gleichen Zweck - einer auf XP und darunter und der andere auf Vista und höher. Das Ergebnis hängt also vom Betriebssystem ab, das Sie verwenden. – eran

+1

Siehe oben - hinzugefügte Beispielpfade, die die Konstante in verschiedenen Windows-Versionen löst –