Toon posts:

[Delphi] Logon username ophalen bij AD

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik wil in een delphiprogramma de ingelogde username ophalen.
Dit werkt al in de volgende gevallen:
- Netware (complete path, notatie CN=USER.OU=ORGUNIT.O=ORG)
- WinNT domein (zelfde notatie van gemaakt, CN=USER.O=DOMAIN, apart user en domein opgehaald uit Windows).

Nu moet ik bij een nieuwe klant (die een Active Directory systeem gebruikt), ook de ingelogde username ophalen (Full Distinguished Name, dus: CN=User.OU=Lokatie1.O=DOMAIN).
Dit kan echter niet op de NT-manier, want dan krijg ik alleen User en Domain.

Nu is mijn vraag:
* Kan iemand bevestigen dat in het opgehaalde windows NT domain het complete path staat?

Ik lees de username bij een Windows 2000 / XP machine als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
       hNETAPI := LoadLibrary( 'NETAPI32.DLL' );
       if hNETAPI <> 0 then begin
         @WinNT_NetWkstaGetInfo  := GetProcAddress( hNETAPI, 'NetWkstaGetInfo' );
         @WinNT_NetApiBufferFree := GetProcAddress( hNETAPI, 'NetApiBufferFree' );
         EC := WinNT_NetWkstaGetInfo( nil, 100, Pointer( WSNT ) );
         if EC = 0 then begin
           Domain := WideCharToString( WSNT^.wki100_langroup );
           Username := getWindowsUser;
           WinNT_NetApiBufferFree( Pointer( WSNT ) );
           if (length(domain) > 0) and (length(username) > 0) then
             filledIn := true;
         end;
       end;


getWindowsUser is een aparte functie die via
code:
1
2
3
4
5
6
7
8
9
10
11
12
  function getWindowsUser: String;
  var
    xName      : array [0..63] of Char;
    NwUserName : pChar;
    NwBufSize  : dWord;
    NwError    : Word;
  begin
    NwUserName := xName;
    NwBufSize  := SizeOf(xName);
    NwError    := wNetGetUser(nil, NwUserName, NwBufSize);
    Result     := NwUserName;
  end;

de username ophaalt.

Zelf draai ik hier in de buurt nergens Active Directory om dit "even" te testen. Alvast hartelijk bedankt!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:06

Creepy

Tactical Espionage Splatterer

Eeh, je wilt dat ik voor je ga testen? Sorry, dat vertik ik :)
Met GetUserNameEx kan je volgens mij prima alle informatie ophalen die je nodig hebt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Creepy schreef op 23 augustus 2004 @ 14:24:
Eeh, je wilt dat ik voor je ga testen? Sorry, dat vertik ik :)
Met GetUserNameEx kan je volgens mij prima alle informatie ophalen die je nodig hebt.
Ik ga op zoek. Overigens was mijn vraag niet 'test deze software'. Ik vroeg alleen of iemand mijn vermoeden kan bevestigen ;)