[DELPHI] Full WinNT username

Pagina: 1
Acties:
  • 283 views sinds 30-01-2008
  • Reageer

  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
Beste mensen,

Is het mogelijk om via een bepaalde weg de VOLLE naam van de ingelogde (WinNT/2000) gebruiker op te vragen?

Ik heb genoeg mogelijkheden gevonden om de huidig ingelogde gebruikersnaam op te vragen (is vaak een afkorting). Maar bij een Windows NT domein gebruiker kan ook "Full name" worden ingevuld en hier valt weinig over te vinden...

Please help!

Groeten,

Ronald

An assumption is the mother of all fuck-ups


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Je hebt vast de MSDN docs over GetUserName al grondig doorgelezen?

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Looky here

Het hoeft niet heel ingewikkeld te zijn, als je maar weet met welke termen je waar moet zoeken. ;)

Als je op MSDN van Microsoft zoekt, krijg je een heel nuttig draadje

My personal website


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
Ja, ik heb het één en ander in de MSDN gelezen, ik weet alleen niet hoe ik deze code (werkend) in delphi kan kloppen. Ik vond deze functies:

Windows.GetUserNameA
Windows.GetUserNameW
Windows.GetUserName

Alleen om de uitvoer in een String te krijgen...

Groet Ronald

An assumption is the mother of all fuck-ups


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 12-12-2025
Dit haal ik eruit:

code:
1
2
3
4
BOOL GetUserName(
  LPTSTR lpBuffer,
  LPDWORD nSize
);
Parameters
lpBuffer
[out] Pointer to the buffer to receive the null-terminated string containing the user's logon name. If this buffer is not large enough to contain the entire user name, the function fails. A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in Lmcons.h.

Return Values
If the function succeeds, the return value is a nonzero value, and the variable pointed to by nSize contains the number of TCHARs copied to the buffer specified by lpBuffer, including the terminating null character.

If the function fails, the return value is zero. To get extended error information, call GetLastError.
En als je dan nog in het Example kijkt, moet het niet te missen zijn!

Windows Phone Apps: Belstatus, Pinautomaten


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Zoeken op getusername delphi brengt je naar een aantal topics in dit forum die dit behandelen.

We adore chaos because we like to restore order - M.C. Escher


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

DjRp schreef op 04 februari 2004 @ 13:56:
[...]
Ja, ik heb het één en ander in de MSDN gelezen, ik weet alleen niet hoe ik deze code (werkend) in delphi kan kloppen. Ik vond deze functies:

Windows.GetUserNameA
Windows.GetUserNameW
Windows.GetUserName
Ik zette 'grondig' niet voor niets bold, met GetUserName kun je alleen de 'afkorting' of 'loginname' opvragen. De 'Full name' is een extended property.

nu maak ik het wel erg duidelijk :)

Professionele website nodig?


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
curry684 schreef op 04 februari 2004 @ 14:04:
[...]

Ik zette 'grondig' niet voor niets bold, met GetUserName kun je alleen de 'afkorting' of 'loginname' opvragen. De 'Full name' is een extended property.

nu maak ik het wel erg duidelijk :)
Grote vriend Curry,

Ik heb dit geprobeerd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const 
  NameUnknown = 0; // Unknown name type. 
  NameFullyQualifiedDN = 1;  // Fully qualified distinguished name 
  NameSamCompatible = 2; // Windows NT® 4.0 account name 
  NameDisplay = 3;  // A "friendly" display name 
  NameUniqueId = 6; // GUID string that the IIDFromString function returns 
  NameCanonical = 7;  // Complete canonical name 
  NameUserPrincipal = 8; // User principal name 
  NameCanonicalEx = 9; 
  NameServicePrincipal = 10;  // Generalized service principal name 
  DNSDomainName = 11;  // DNS domain name, plus the user name 


procedure GetUserNameEx(NameFormat: DWORD; 
  lpNameBuffer: LPSTR; nSize: PULONG); stdcall; 
  external 'secur32.dll' Name 'GetUserNameExA'; 


function LoggedOnUserNameEx(fFormat: DWORD): string; 
var 
  UserName: array[0..250] of char; 
  Size: DWORD; 
begin 
  Size := 250; 
  GetUserNameEx(fFormat, @UserName, @Size); 
  Result := UserName; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Edit1.Text := LoggedOnUserNameEx(NameDisplay); 
end;

Ik krijg er nu alleen een getalletje (1) uit...
Met de functie LoggedOnUserNameEx(NameSamCompatible) krijg ik
wel de gebruikersnaam maar niet de volledige. (domein/gebruikersnaam)

Groet Ronald

An assumption is the mother of all fuck-ups


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

DjRp schreef op 04 februari 2004 @ 14:17:
[...]
Ik krijg er nu alleen een getalletje (1) uit...
Met de functie LoggedOnUserNameEx(NameSamCompatible) krijg ik
wel de gebruikersnaam maar niet de volledige. (domein/gebruikersnaam)

Groet Ronald
Waarom check je de returnvalue van GetUserNameEx niet?

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Zal ik dan mijn nuttige linkje maar eens een keer IN CAPS neerzetten...? Misschien dat hij dan gezien wordt.

Overigens staat er nog een nuttige link in mijn vorige post, voor als je de full name niet uit je domein wil halen.

My personal website


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

OZ-Gump schreef op 04 februari 2004 @ 14:23:
Zal ik dan mijn nuttige linkje maar eens een keer IN CAPS neerzetten...? Misschien dat hij dan gezien wordt.
Daar moet je het domain voor weten, met GetUserNameEx(NameDisplay, ...) krijg je gewoon de display/full name :)

Professionele website nodig?


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
curry684 schreef op 04 februari 2004 @ 14:20:
[...]

Waarom check je de returnvalue van GetUserNameEx niet?
GetUserNameEx is in dit geval toch een procedure? Heeft toch geen return value en zo wel waar haal ik die vandaan dan?

An assumption is the mother of all fuck-ups


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

DjRp schreef op 04 februari 2004 @ 14:45:
[...]
GetUserNameEx is in dit geval toch een procedure? Heeft toch geen return value en zo wel waar haal ik die vandaan dan?
*kuch*
BOOLEAN GetUserNameEx(
EXTENDED_NAME_FORMAT NameFormat,
LPTSTR lpNameBuffer,
PULONG nSize);

Parameters

NameFormat
[in] Format of the name. This parameter is a value from the EXTENDED_NAME_FORMAT enumeration type. It cannot be NameUnknown.

lpNameBuffer
[out] Pointer to a buffer that receives the name in the specified format. The buffer must include space for the terminating null character.
*kuch*

PS: waarom zet je de size voor de buffer handmatig? Waarom gebruik je SizeOf niet? En de laatste keer dat ik keek was 0 tot en met 250 nog 251... ;)

[ Voor 19% gewijzigd door OZ-Gump op 04-02-2004 14:53 ]

My personal website


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
Wat doe ik nu in de bovenstaande code verkeerd dan? De uitvoer gaat toch met een pointer (@UserName) naar de variabele UserName (array of char) waar de result van de functie aan gelijk wordt?

Of wordt ik nu gek? :?

Eer aan de gene die met een duidelijke oplossing komt (stukje (pascal) code of zo) i.p.v. MSDN (C) gezwijmel... _/-\o_

An assumption is the mother of all fuck-ups


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:46

Creepy

Tactical Espionage Splatterer

DjRp schreef op 04 februari 2004 @ 14:55:
[...]


Wat doe ik nu in de bovenstaande code verkeerd dan? De uitvoer gaat toch met een pointer (@UserName) naar de variabele UserName (array of char) waar de result van de functie aan gelijk wordt?

Of wordt ik nu gek? :?
GetUserNameEx heeft een return value, en jij maakt er een procedure van.
Eer aan de gene die met een duidelijke oplossing komt (stukje (pascal) code of zo) i.p.v. MSDN (C) gezwijmel... _/-\o_
Hou de eer aan jezelf en lees alle hints, tips en documentatie die nu gegeven is. Als je dan nog niet in staat bent om GetUserNameEx te gebruiken dan lijkt het me beter om te stoppen met programmeren ;)

"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


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

DjRp schreef op 04 februari 2004 @ 14:55:
[...]
Eer aan de gene die met een duidelijke oplossing komt (stukje (pascal) code of zo) i.p.v. MSDN (C) gezwijmel... _/-\o_
Het is geen MSDN (C) gezwijmel, het is De Alomvattende Win32 API. Die kun je beter goed leren lezen ipv dat wij het voorkauwen, want als je zelf niets van Win32 wil weten of hoe je het moet gebruiken kun je idd beter stoppen met Delphi programmeren :)

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Ik wil niet vervelend doen (>:)), maar ik heb even gekeken, en ik krijg ik weet niet hoeveel namen van mezelf terug, inclusief mijn volledige naam, door gebruik te maken van GetUserNameEx in combinatie met de verschillende opties voor de format van de naam.

Enige voorwaarde is wel dat, wanneer deze gegevens ingegeven zijn op de server, jij verbinding hebt met de server. Wanneer de gegevens lokaal staan (local user management dus) is er volgens mij niets aan de hand.

My personal website


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
curry684 schreef op 04 februari 2004 @ 15:16:
[...]

Het is geen MSDN (C) gezwijmel, het is De Alomvattende Win32 API. Die kun je beter goed leren lezen ipv dat wij het voorkauwen, want als je zelf niets van Win32 wil weten of hoe je het moet gebruiken kun je idd beter stoppen met Delphi programmeren :)
Ik dacht dat dit forum enigzins iemand kon helpen met een bepaald probleem. Er worden dan ook genoeg hints en uitleg gegeven, maar op het moment dat iemand het dan nog niet goed begrijpt wordt je de grond in getrapt... Erg jammer.

Ik heb het idee dat ik er bijna ben, de code ligt dan ook op het puntje van mn beeldscherm. Is er nog iemand die enigzins wel een *vriendelijk* advies kan geven?

Met vriendelijk groet,

Ronald.

An assumption is the mother of all fuck-ups


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

*schopt tegen scherm* - hopelijk valt het er nu af... ;)

Kijk eens goed naar de hints die er gegeven zijn. (SizeOf, GetUserNameEx, controles). En als het daarmee niet lukt...

- Geef de relevante code (tenzij dit alles is) en geef aan waar het vastloopt.
- Zet breakpoints in je code en kijk welke waarde je variabelen hebben.
- Probeer het uit op meer dan 1 systeem.
- Vermeld het OS waarop je de code probeert uit te voeren en zoek naar verwante onderwerpen op GoT en groups.google.com

My personal website


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

DjRp schreef op 04 februari 2004 @ 15:24:
[...]
Ik dacht dat dit forum enigzins iemand kon helpen met een bepaald probleem. Er worden dan ook genoeg hints en uitleg gegeven, maar op het moment dat iemand het dan nog niet goed begrijpt wordt je de grond in getrapt... Erg jammer.

Ik heb het idee dat ik er bijna ben, de code ligt dan ook op het puntje van mn beeldscherm. Is er nog iemand die enigzins wel een *vriendelijk* advies kan geven?
Nou ja, jij hebt lef :/

Er besteden hier 4+ mensen een hoop tijd om je zo ver mogelijk in de goede richting te sturen zonder de feitelijke code voor je te schrijven, en vervolgens pik jij echt meer dan TIEN subtiele hints niet op en ga je ons voor onvriendelijke n00bbashers of zo uit zitten maken omdat we je code niet schrijven?

* curry684 noteert user die geen hulp meer gaat krijgen van ondergetekende :Z

Professionele website nodig?


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
curry684 schreef op 04 februari 2004 @ 16:23:
[...]

Nou ja, jij hebt lef :/

Er besteden hier 4+ mensen een hoop tijd om je zo ver mogelijk in de goede richting te sturen zonder de feitelijke code voor je te schrijven, en vervolgens pik jij echt meer dan TIEN subtiele hints niet op en ga je ons voor onvriendelijke n00bbashers of zo uit zitten maken omdat we je code niet schrijven?

* curry684 noteert user die geen hulp meer gaat krijgen van ondergetekende :Z
Meneer Curry,

Op dit moment heb ik zo'n 4 uur besteed aan het verkrijgen van de volledige gebruikers naam. Ik heb behoorlijk veel doorgelezen en bestudeerd en ik verwacht ook niet dat iemand code voor mij gaat opschrijven. Bij het testen krijg ik alleen telkens een waarde "1" terug. Ik heb ook gelezen dat het opvragen van de volledige gebruikers naam moet werken met een NT4 domein (waar ik op draai met een W2k bak). Maar ik twijfel er aan, want de procedure zoals ik boven heb op geschreven (en dat is alles) werkt wel met de waarde "NameSamCompatible".
Ik krijg dus ook geen foutmeldingen of iets dergelijke.

Excuses voor gedrag :'( , ik was enorm chaggie :(

Ronald.

[ Voor 7% gewijzigd door RpR op 04-02-2004 16:56 ]

An assumption is the mother of all fuck-ups


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Kijk voor de grap eens wat er bij de voledige gebruikersnaam staat ingevuld in het domein.... Toch niet toevallig '1', omdat bij installatie die optie niet zo nuttig leek...? :X

My personal website


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
OZ-Gump schreef op 04 februari 2004 @ 16:56:
Kijk voor de grap eens wat er bij de voledige gebruikersnaam staat ingevuld in het domein.... Toch niet toevallig '1', omdat bij installatie die optie niet zo nuttig leek...? :X
Een goeie! Maar het is het niet... Wanneer ik "NameSamCompatible" gebruik krijg ik de waarde "DENBOER\SYSOP" (domein: denboer, username: sysop).

Wanneer ik met een beheer tool zoals Hyena, of op de NT4 Server zelf kijk, staat er onder Full name: "System Operator".

En tevens worden bij alle andere waardes zoals "DNSDomainName" of "NameFullyQualifiedDN" ook de waarde 1 terug gelanceerd.

An assumption is the mother of all fuck-ups


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

* curry684 is over een uurtje thuis en zal eens even testen, apologies accepted ;)

Professionele website nodig?


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 03-01 19:57

Tomatoman

Fulltime prutser

DjRp/Ronald,

Niet als flame bedoeld, maar ik zal je even een quote uit de algemene FAQ geven:
Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken. Als je perse zoiets wilt kun je daar je signature voor gebruiken (zie latere uitleg).
Met deze melding doe ik je dus automatisch de groeten :)

Een goede grap mag vrienden kosten.


  • sn0x0r
  • Registratie: December 2003
  • Laatst online: 04-01 17:50
Ikzelf gebruik dit. Ik begreep niet helemaal of dit je bedoeling was. Maar als ik ingelogd ben als <naam> komt dat er ook uit bij mij.

Delphi:
1
2
3
4
5
6
7
8
9
10
11
function GetLoginName: string;
var
  buffer: array[0..255] of char;
  size: dword;
begin
  size := 256;
  if GetUserName(buffer, size) then
    Result := buffer
  else
    Result := ''
end;

[ Voor 3% gewijzigd door sn0x0r op 30-05-2019 22:49 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Ahum, kzie het probleem al:
C:
1
2
3
4
5
6
7
8
9
    char    l_Buffer[256];
    ULONG   l_Long  = 256;
    for(int i = 0; i <= 12; i++)
      {
      if(!GetUserNameExA((EXTENDED_NAME_FORMAT)i, l_Buffer, &l_Long))
        printf("%d failed with error %d\n", i, GetLastError());
      else
        printf("%d : %s\n", i, l_Buffer);
      }

Produceert als output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
0 failed with error 1332
1 failed with error 1332
2 : LUCIFER\Niels
3 failed with error 1332
4 failed with error 1332
5 failed with error 1332
6 failed with error 1332
7 failed with error 1332
8 failed with error 1332
9 failed with error 1332
10 failed with error 1332
11 failed with error 1332
12 failed with error 1332

En error 1332 is: "No mapping between account names and security IDs was done."

Dat klopt ook met de documentatie van GetUserNameEx, die netjes zegt:
If the user name is not available in the specified format, the error is ERROR_NONE_MAPPED. If the domain controller is not available to perform the lookup, the error is ERROR_NO_SUCH_DOMAIN.
Alleen geen idee hoe je dat oplost... :X

Professionele website nodig?


Verwijderd

DjRp schreef op 04 februari 2004 @ 13:26:
Is het mogelijk om via een bepaalde weg de VOLLE naam van de ingelogde (WinNT/2000) gebruiker op te vragen?
Ja
Ik heb genoeg mogelijkheden gevonden om de huidig ingelogde gebruikersnaam op te vragen (is vaak een afkorting). Maar bij een Windows NT domein gebruiker kan ook "Full name" worden ingevuld en hier valt weinig over te vinden...
uhh
NetUserGetInfo


"If you're using Windows NT/2000/XP, you can retrieve user account
information using the NetUserGetInfo function. You should request a
level of at least 2, which contains the user's full name."


Google framework voorbeeld code

[ Voor 37% gewijzigd door Verwijderd op 04-02-2004 23:55 ]


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
Beste Mensen,

Naar een "lange nacht" (en wat hulp van Sinaasappelsap's code) heb ik een projectje kunnen bouwen met een goed werkende functie die aan de hand van de username en de PDC de volledige gebruikersnaam teruggeeft! 8)

Het werkt alleen helaas alleen maar op een W2k machine, niet op een NT4 station!

Sinaasappel: _/-\o_
Curry: Bedankt voor alle hulp... :*)

[ Voor 117% gewijzigd door RpR op 05-02-2004 20:08 . Reden: Probleem nog niet opgelost! ]

An assumption is the mother of all fuck-ups


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 02-01 14:56
Wat is dat dan voor project ?

Kan je niet alleen je code neerzetten die de full-name grabbed ?

The best thing about UDP jokes is that I don't care if you get them or not.


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
Oke, eerst deze type toevoegen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
type
  PUserInfo2 = ^TUserInfo2;
  TUserInfo2 = packed record
    usri2_name: PWideChar;
    usri2_password: PWideChar;
    usri2_password_age: DWORD;
    usri2_priv: DWORD;
    usri2_home_dir: PWideChar;
    usri2_comment: PWideChar;
    usri2_flags: DWORD;
    usri2_script_path: PWideChar;
    usri2_auth_flags: DWORD;
    usri2_full_name: PWideChar;
    usri2_usr_comment: PWideChar;
    usri2_parms: PWideChar;
    usri2_workstations: PWideChar;
    usri2_last_logon: DWORD;
    usri2_last_logoff: DWORD;
    usri2_acct_expires: DWORD;
    usri2_max_storage: DWORD;
    usri2_units_per_week: DWORD;
    usri2_logon_hours: PBYTE;
    usri2_bad_pw_count: DWORD;
    usri2_num_logons: DWORD;
    usri2_logon_server: PWideChar;
    usri2_country_code: DWORD;
    usri2_code_page: DWORD;
  end;

Dan de functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function GetFullUserName(UsernameW: widestring; ComputerNameW: widestring): String;
begin
  NetApiLibrary := LoadLibrary('netapi32.dll');
  if NetApiLibrary <> 0 then
  begin
    try
      @NetUserGetInfo := GetProcAddress(NetApiLibrary, 'NetUserGetInfo');
      @NetApiBufferFree := GetProcAddress(NetApiLibrary, 'NetApiBufferFree');
      if (@NetUserGetInfo <> nil) and (@NetApiBufferFree <> nil) then
      begin
        NetResult := NetUserGetInfo(PWideChar(ComputerNameW), PWideChar(UserNameW), 2, UserInfo);
          try
            Result := PWideChar(PUserInfo2(UserInfo)^.usri2_full_name);
            NetApiBufferFree(UserInfo);
          except
            Result := 'Error getting userinfo';
          end;
      end;
    finally
      FreeLibrary(NetApiLibrary);
    end;
  end;
end;

Alleen het blijkt helaas dat dit niet werkt op een NT4 station!
Wel werkt het op een W2k bak in combinatie met een NT4 domein...
Iemand een verklaring?

An assumption is the mother of all fuck-ups


  • sn0x0r
  • Registratie: December 2003
  • Laatst online: 04-01 17:50
Hmz, ik denk dat die verklaring dit is:

Het heeft te maken met de API's van je Operating System, aangezien die toch per OS veranderen, en ze de indeling van login structuur ook altijd weer veranderen, hebben ze dus per OS een functie/procedure die deze kan aanroepen.

LoadLibrary('netapi32.dll'); <-- gebruik je voor vele andere dingen, en als ik me niet vergis zit deze alleen in 2000 en hoger. Maar dat weet ik niet zeker.

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 02-01 14:56
Is er ook niet een .net framework functie dat dit aankan ?
Dan kan je het wel met nt 4.0 doen.

The best thing about UDP jokes is that I don't care if you get them or not.


  • RpR
  • Registratie: November 2003
  • Laatst online: 11-02-2022
sn0x0r schreef op 05 februari 2004 @ 22:16:
LoadLibrary('netapi32.dll'); <-- gebruik je voor vele andere dingen, en als ik me niet vergis zit deze alleen in 2000 en hoger. Maar dat weet ik niet zeker.
NetApi32.dll wordt ook wel gebruikt door NT4 (misschien alleen SP6), maar deze versie verschilt logischerwijs met de dll van W2k. De foutmelding geeft ook aan dat de aangeroepen functie niet werkt/bestaat.

Is er ergens informatie te vinden over de NT4 versie van deze dll?
Misschien op MSDN?

An assumption is the mother of all fuck-ups

Pagina: 1