System - Namen des NT-Users auslesen



  • Hallo,

    wie kann man denn den User-Namen (nicht das Login !!!) bei NT auslesen ?

    habe da die Funktion >> GetUserName(szBuf, &dwSize); << gefunden, aber die liest nur das Login aus und nicht den wirklichen Namen des Users. Der muß aber auch irgendwo stehen, weil ich Programme habe, bei denen das mit ausgelesen wird !!!

    Für Hilfe wäre ich sehr dankbar !!!

    [ Dieser Beitrag wurde am 30.06.2002 um 18:38 Uhr von Jansen editiert. ]



  • Probiere es mal mit folgendem Code:

    BOOL GetCurrentUserAndDomain(PTSTR szUser, PDWORD pcchUser,
          PTSTR szDomain, PDWORD pcchDomain);
    
    void __fastcall TMainForm::btGetUserAndDomain(TObject *Sender)
    {
        char    cayUser[255];
        DWORD   cchUser = 255;
        char    cayDomain[255];
        DWORD   cchDomain = 255;
    
        GetCurrentUserAndDomain(cayUser, &cchUser, cayDomain, &cchDomain);
    
    // Nach erfolgreicheim Aufruf ist in cayUser und cayDomain der aktulle Name und die Domain.
    }
    //
    

    [ 09.07.2001: Beitrag editiert von: Happy Builder ]



  • HI!

    Ich glaube ich habe einen einfacheren Code.

    DWORD dwSize = 0;

    // Determine how many chars we need to store user name
    GetUserName(NULL, &dwSize);

    // create a buffer that is big enough
    char *szBuf = new char[dwSize];
    szBuf[0] = '\0';

    // Read the user name and place it in a label
    GetUserName(szBuf, &dwSize);
    UserName->Caption = szBuf;;

    ------------------
    -=[r@tfury]=-



  • Tja, schade, aber alle Versuche finden das gleiche Ergebnis: Das NT-LOGIN ( das mit dem man sich anmeldet !!! )

    Wenn ich die Arbeitsstation sperre, dann kommt die Nachricht:... kann nur von...oder dem User xxx (Name -des Users- Vorname)

    und letzteres hätte ich gerne ausgelesen !!!
    Das in der Klammer !!!



  • Probiere es mal mit folgendem Code.

    #include <lm.h>
    
    AnsiString GetUserFullname(AnsiString strUsername)
    {
        AnsiString strFullname;
        PNET_DISPLAY_USER pBuff, p;
        DWORD res, dwRec, i = 0;
    
       do // begin do
       {
          //
          // Call the NetQueryDisplayInformation function;
          //   specify information level 1 (user account information).
          //  This code returns the data in chunks of 25 bytes to
          //  demonstrate how to make the request over and over again.
          //
          res = NetQueryDisplayInformation(WideString(""), 1, i, 1000, 25, &dwRec, (void **)&pBuff);
          //
          // If the call succeeds,
          //
          if((res==NERR_Success) | | (res==ERROR_MORE_DATA))
          {
             p = pBuff;
             for(;dwRec>0;dwRec--)
             {
                //
                // Print the retrieved user information.
                //
                if (strUsername == p->usri1_name)
                {
                strFullname = p->usri1_full_name;
                }
    
                //
                // If there is more data, set the index.
                //
                i = p->usri1_next_index;
                p++;
             }
             //
             // Free the allocated memory.
             //
             NetApiBufferFree(pBuff);
          }
       //
       // Continue while there is more data.
       //
       } while (res==ERROR_MORE_DATA); // end do
    
        return strFullname;
    }
    

    ------------------
    Happy Building
    wünscht
    Happy Builder
    Ein Besuch der sich lohnt: http://www.bcbarena.de


Anmelden zum Antworten