Moin Zusammen,
könnte bitte mal jemand dieses Codestück ausprobieren:
Delphi-Quellcode:
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.
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:
---------------------------
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