Announcement

Collapse
No announcement yet.

Homeverzeichnis eines Benutzers

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Homeverzeichnis eines Benutzers

    Wie kann man mit dem C++ Builder das Homeverzeichnis des aktuellen Benutzers ermitteln. Es geht darum, dass das Programm einmal installiert wird, aber jeder Benutzer seine eigenen Daten und einstellungen hat.

    Gruss
    Sebastian

  • #2
    Sebastian,

    String s = getenv("USERPROFILE");

    Gruß,
    Ja

    Comment


    • #3
      Als Homeverzeichnis interpretiere ich Eigene Dateien, aber eben das bekommt man mit getenv() nicht heraus.
      Früher gab's mal die Win-API Funktion SHGetSpecialFolder(), aber die bekomme ich unter BCB5/6 auf WinXP nicht mehr zum laufen...

      cu Joche

      Comment


      • #4
        Jochen,

        mit API-Aufrufen hatte ich beim CB6 anfangs auch Probleme. In der "ShlObj.hpp" Zeile 24 befindet sich ein Kommentar, der da vielleicht weiterhilft. Nachdem ich

        #define NO_WIN32_LEAN_AND_MEAN

        entkommentiert hatte, konnte ich wieder meine alten (CB4) API-Funktionen aufrufen.

        Gruß,
        Ja

        Comment


        • #5
          Hi Jan,

          danke für den Tip. Das werde ich morgen direkt ausprobieren.

          Grüße, Joche

          Comment


          • #6
            @Jan

            Hi Jan, nochmals danke für den wertvollen Tip. Ich kann die WinAPIs wieder verwenden...

            @Sebastian

            Hi Sebastian, nachdem ich ShlObj.hpp geändert habe, funktioniert der folgende Code:

            <PRE>
            LPITEMIDLIST pidl;
            LPMALLOC pShellMalloc;
            char szDir[MAX_PATH];

            if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
            {
            if(SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl)))
            {
            if(SHGetPathFromIDList(pidl, szDir))
            {
            Label1->Caption = szDir;
            }
            pShellMalloc->Free(pidl);
            }

            pShellMalloc->Release();
            }
            </PRE>

            Weitere 'Special Folders' sind:
            <PRE>
            CSIDL_BITBUCKET Recycle bin
            CSIDL_CONTROLS Control Panel
            CSIDL_DESKTOP Windows desktop
            CSIDL_DESKTOPDIRECTORY Directory for the desktop
            CSIDL_DRIVES My Computer
            CSIDL_FONTS Fonts directory
            CSIDL_NETHOOD Network Neighborhood
            CSIDL_NETWORK Network Neighborhood virtual folder
            CSIDL_PERSONAL My Documents
            CSIDL_PRINTERS Printers
            CSIDL_PROGRAMS Program groups
            CSIDL_RECENT Most recent documents list
            CSIDL_SENDTO Send To menu items
            CSIDL_STARTMENU Taskbar Start menu items
            CSIDL_STARTUP Startup directory
            CSIDL_TEMPLATES Document templates
            </PRE>

            Dieses Beispiel ist von http://www.bcbdev.com/faqs.htm.
            Dort gibt's auch die Kommentare und Erklärungen dazu.

            Viel Spaß,

            Joche

            Comment

            Working...
            X