Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#10

Re: Benutzer Kennwort erforderlich - UF_PASSWD_NOTREQD

  Alt 24. Jul 2008, 15:05
Es klappt einfach nicht!

Der folgende Code enthält nie das UF_PASSWD_NOTREQD-Flag, egal ob ich ein Kennwort besitze oder nicht?!

Delphi-Quellcode:
   USER_INFO_1 = record
    usri1_name: LPWSTR;
    usri1_password: LPWSTR;
    usri1_password_age: DWORD;
    usri1_priv: DWORD;
    usri1_homde_dir: LPWSTR;
    usri1_comment: LPWSTR;
    usri1_flags: DWORD;
    usri1_script_path: LPWSTR;
  end;


  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 TMainForm.PasswordNotRequired: Boolean;
const
 UF_PASSWD_NOTREQD = 32;
var
 Info: USER_INFO_1;
 P: Pointer;
 UserName: PWideChar;
 nSize: Cardinal;
 R: DWORD;
begin
 Result := True;
 nSize := 0;
 GetUserNameW(NIL, nSize);
 GetMem(UserName, nSize*2+1);
 GetUserNameW(UserName, nSize);

 if NetUserGetInfo(NIL, UserName, 1, P) = 0 then begin
    Info := USER_INFO_1(P^);
    Result := ((Info.usri1_flags and UF_PASSWD_NOTREQD) = UF_PASSWD_NOTREQD);
 end;

 NetApiBufferFree(P);
 FreeMem(UserName);
end;
Liegts an meinem Code?

Ich bin auch gern bereit eine andere Methode zu benutzen, um rauszubekommen, ob der user ein Passwort hat oder nicht! (Nur die JEDIs wollte ich nicht erst wieder drauf machen, die sind soo viel ^^ )
  Mit Zitat antworten Zitat