![]() |
NetUserGetInfo findet User auf Domänenrechner nicht?
Moin Zusammen,
könnte bitte mal jemand dieses Codestück ausprobieren:
Delphi-Quellcode:
Auf einem XP-Pro SP2 Rechner, der sich in einer Domäne befindet, und an dem sich ein Domänenuser mit lokalen Administrationsrechten angemeldet hat meldet mir dieses Codestück:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; type NET_API_STATUS = DWORD; PUSER_INFO_1 = ^USER_INFO_1; USER_INFO_1 = packed record usri1_name : PWideChar; usri1_password : PWideChar; usri1_password_age : DWORD; usri1_priv : DWORD; usri1_homedir : PWideChar; usri1_comment : PWideChar; usri1_flags : DWORD; usri1_script_path : PWideChar; end; const NERR_Success = 0; // LMErr.h USER_PRIV_GUEST = 0; // LMaccess.h USER_PRIV_USER = 1; // LMaccess.h USER_PRIV_ADMIN = 2; // LMaccess.h function NetUserGetInfo(const servername : PWideChar;const username : PWideChar; const level : DWORD;const bufptr : Pointer) : NET_API_STATUS; stdcall; external 'netapi32.dll'; function NetApiBufferFree(const buffer : Pointer) : NET_API_STATUS; stdcall; external 'netapi32.dll'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var dwSize : DWORD; pwBuf : PWideChar; sAccount : string; dwResult : DWORD; pui : PUSER_INFO_1; begin sAccount := ''; // Hier bitte den Account eintragen dwSize := (length(sAccount)+1)*2; pwBuf := AllocMem(dwSize); try StringToWideChar(sAccount,pwBuf,dwSize); dwResult := NetUserGetInfo(nil,pwBuf,1,@pui); if dwResult = NERR_Success then begin try case pui.usri1_priv of USER_PRIV_GUEST : ShowMessage('Gast'); USER_PRIV_USER : ShowMessage('Benutzer'); USER_PRIV_ADMIN : ShowMessage('Administrator'); else ShowMessage('Unbekannt'); end; finally NetApiBufferFree(pui); end; end else begin ShowMessage(SysErrorMessage(dwResult)+#13#10+IntToStr(dwResult)); end; finally FreeMem(pwBuf,dwSize); end; end; end. --------------------------- Project1 --------------------------- Der Benutzername konnte nicht gefunden werden 2221 --------------------------- OK --------------------------- Auf einem XP-Pro SP2 Rechner, der sich in einer Arbeitsgruppe befindet, und an dem ein lokaler User mit lokalen Administrationsrechten angemeldet ist, funktioniert der Aufruf problemlos... Der gleiche Effekt tritt auch bei NetUserGetLocalGroups auf. Falls jemand eine Idee hat, ohne es auszuprobieren: Immer her damit ;-) |
Re: NetUserGetInfo findet User auf Domänenrechner nicht?
Sollte der erste Parameter nicht auf den Domainserver verweisen? Immerhin willst du ihn doch in der Domain suchen, den Benutzer. Anders als bei anderen Funktionen, welche dann automatisch auf den Domainserver zurueckgreifen, ist das m.M.n. bei dieser Funktion nicht der Fall. Ist ja noch eine aus NT4-Zeiten.
|
Re: NetUserGetInfo findet User auf Domänenrechner nicht?
Moin Olli,
danke, in der Richtung hatte ich auch schon überlegt, bin mir aber ziemlich sicher, dass ich es schon in einer Domäne erfolgreich benutzen konnte. Immerhin hast Du mich dadurch aber schon einmal in die richtige Richtung "geschubst": Es gibt ja auch noch die NetWkstaXXX-Funktionen... |
Re: NetUserGetInfo findet User auf Domänenrechner nicht?
Moin Olli,
nochmal danke. Du hast mich auf den richtigen Weg gebracht: Erst mit NetWkstaUserGetInfo (Level 1) die Anmeldedomäne und den Usernamen ermitteln, dann mit NetUserGetLocalGroups (username = Domäne\User) die Gruppen ermittelt. War zwar nicht 100%ig das was ich wollte, genügt aber in diesem Fall. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz