Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#13

Re: Benutzer Kennwort erforderlich - UF_PASSWD_NOTREQD

  Alt 25. Jul 2008, 21:38
Moin, moin,

der Code von marabu funktioniert bei mir unter Windows VISTA x64 hervorragend, aber unter Window XP Prof. XP3 funktioniert er auch nicht.

Edit:
Ich habe jetzt noch ein bisschen rumprobiert und die USER_INFO_1008 gefunden. Die beinhaltet lediglich nur den Wert, den Du benötigst. Dazu habe ich jetzt den Code oben von marabu angepasst und es funktioniert unter Windows XP Prof. SP2.

Delphi-Quellcode:
const
  UF_PASSWD_NOTREQD = 32;
  UNLEN = 20; // 256 for groupnames
  NERR_SUCCESS = 0;

TYPE
  USER_INFO_1008 = record
    usri1008_flags: DWORD;
  end;
  TUserInfo1008 = USER_INFO_1008;
  PUserInfo1008 = ^TUserInfo1008;

  function NetUserGetInfo(servername: LPCWSTR; username: LPCWSTR; level: DWORD; var bufptr: Pointer): DWORD;
           stdcall; external 'netapi32.dllname 'NetUserGetInfo';

  function NetApiBufferFree(Buffer: Pointer): DWORD; stdcall;
           external 'netapi32.dllname 'NetApiBufferFree';

function PasswordNotRequired: Boolean;
var
  ui: PUserInfo1008;
  p: Pointer absolute ui;
  un: WideString;
  n: Cardinal;
begin
  p := nil;
  n := Succ(UNLEN);
  SetLength(un, UNLEN);
  Result := GetUserNameW(@un[1], n)
    and (NetUserGetInfo(nil, @un[1], 1, p) = NERR_SUCCESS)
    and ((ui.usri1008_flags and UF_PASSWD_NOTREQD) = UF_PASSWD_NOTREQD);
  if Assigned(p) then
    NetApiBufferFree(p);
end;
Probiere es einfach mal aus.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat