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.aspx

    HTH,
    Martin



  • Prima, Danke,


Anmelden zum Antworten