APPDATA
-
Wie heißt denn die WinAPI-Funktion mit der ich das APPDATA (Umgebungsvariable) Verzeichnis herausbekomme?
-
Ich gehe davon aus, Du meinst die Speicherorte für Applikations-Daten (z.B. Einstellungen in einer privaten *.INI-Datei)?
Je nachdem was Du brauchst (Einstellungen per User oder für alle User einheitlich) nimm eine von den drei Konstanten: CSIDL_APPDATA, CSIDL_LOCAL_APPDATA oder CSIDL_COMMON_APPDATA.
Kurz und bündig und hoffentlich selbsterklärend:
int32 i32_csidl; TCHAR tcsz_path[_MAX_PATH]; HRESULT hresult; i32_csidl = CSIDL_COMMON_APPDATA; //je nachdem was Du brauchst: //CSIDL_APPDATA=Einstellungen für einen User, mit Serverspeicherung. //CSIDL_LOCAL_APPDATA=Einstellungen für einen User, keine Serverspeicherung (auf lokalem PC beschränkt). //CSIDL_COMMON_APPDATA=Einstellungen für alle User, keine Serverspeicherung (auf lokalem PC beschränkt). //Hinweis: "Serverspeicherung" ist Roaming, d.h. der User findet beim Login an einem anderen PC seine Einstellungen wieder. hresult = SHGetFolderPath( NULL, i32_csidl, NULL, SHGFP_TYPE_CURRENT, tcsz_path ); //hresult=S_OK: Gültiges Verzeichnis gefunden. //hresult=S_FALSE: CSIDL ist gültig, aber das Verzeichnis existiert nicht (ANSI-Version SHGetFolderPathA). //hresult=E_FAIL: CSIDL ist gültig, aber das Verzeichnis existiert nicht (Unicode-Version SHGetFolderPathW). //hresult=E_INVALIDARG: Ungültige Parameter, z.B. falsche und unbekannte CSIDL-Konstante (z.B. eine bestimmte Konstante gibts erst ab WinXP oder Vista).Für die eigentlichen Nutzer-Daten, z.B. die Dokumente (oder Bilder, Projekte, Aufzeichnungen von serieller Schnittstelle usw.) gibt es andere Speicherorte z.B. CSIDL_PERSONAL oder CSIDL_COMMON_DOCUMENTS.
Siehe auch: CSIDL http://msdn2.microsoft.com/en-us/library/bb762494.aspxHTH,
Martin
-
Prima, Danke,