Announcement

Collapse
No announcement yet.

Wer bin ich

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

  • Wer bin ich

    Hallo,

    habe das Forum durchwühlt, aber leider nichts gefunden.
    Ich versuche den aktuell angemeldeten User herauszufinden.
    Gibt es einen Registry-Eintrag, der diesen enthält oder evtl.
    eine Methode im C++ Builder der so etwas abfragen kann?

    Danke
    PHP rocks!
    Eine Initiative der PHP Community

  • #2
    In der JCL (Jedi Code Library) gibt es die Funktion GetLocalUserName welcher die Win32-API-Funktion kapselt.

    Comment


    • #3
      ja,

      GetUserName


      der WIN API
      Christian

      Comment


      • #4
        Prima! Danke!

        Gibt es sowas vielleicht auch für das Home-Verzeichnis?
        PHP rocks!
        Eine Initiative der PHP Community

        Comment


        • #5
          In der JCL gibt es eine Unit in der man so ziemlich alle System/Userverzeichnisse abfragen kann. Diese ist ebenfalls auch nur ein Wrapper um die entsprechenden Win32-API-Schnittstellen

          Comment


          • #6
            http://www.marquardtnet.info/cecke/k...ialfolder.html
            Christian

            Comment


            • #7
              Danke Christian!

              Das werde ich mal testen...
              PHP rocks!
              Eine Initiative der PHP Community

              Comment


              • #8
                Wer suchet, der findet! :-)

                Das Ganze funktioniert auch über die Shell-Funktion
                SHGetFolderPath( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath)

                I.d.R. kann man hwndOwner und hToken auf NULL, sowie dwFlags auf 0 setzen.

                Für nFolder brauchen wir die CSIDL-Bezeichnung des Ordners.
                SHGetFolderPath(...) kann zwar nur mit den CSIDL's

                CSIDL_ADMINTOOLS
                CSIDL_COMMON_ADMINTOOLS
                CSIDL_APPDATA
                CSIDL_COMMON_APPDATA
                CSIDL_COMMON_DOCUMENTS
                CSIDL_COOKIES
                CSIDL_FLAG_CREATE
                CSIDL_HISTORY
                CSIDL_INTERNET_CACHE
                CSIDL_LOCAL_APPDATA
                CSIDL_MYPICTURES
                CSIDL_PERSONAL
                CSIDL_PROGRAM_FILES
                CSIDL_PROGRAM_FILES_COMMON
                CSIDL_SYSTEM
                CSIDL_WINDOWS

                umgehen, aber für diesen Zweck reicht ja auch CSIDL_PERSONAL.

                Die genaue Beschreibung zu den CSIDL entnehmt Ihr bitte der Hilfe.
                Einfach CSIDL als Suchbegriff eingeben.

                Ein kleines Beispiel:
                Code:
                TCHAR szPath[1024];
                
                SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, szPath);
                ShowMessage(szPath);
                Die Funktion schreibt die Rückgabe in einen Null-terminierten String szPath. Den wir wegen der AnsiString-Kompatiblität direkt wieterverwenden können.

                Um die Funktion nutzen zu können muß man allerdings die <shlobj.h> einbinden:
                Code:
                #define NO_WIN32_LEAN_AND_MEAN
                #include <shlobj.h>
                Die Definition von NO_WIN32_LEAN_AND_MEAN wird benötigt,
                um die <windows.h> nur in nötigem Umfang zu kompilieren.
                Eine genauere Beschreibung kann ich ehrlich gesagt nicht dazu geben.
                Sollte auch über ein anders Thema eingestellt werden, falls das jemand wissen möchte.

                Jedenfalls funktioniert es wunderbar!
                Wer allgemein spezielle Ordner behandeln möchte, sollte sich einmal Christians Link ansehen. Das hat mir hierbei sehr geholfen!
                PHP rocks!
                Eine Initiative der PHP Community

                Comment

                Working...
                X