Thema: Delphi GetAccountSID

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

GetAccountSID

  Alt 13. Dez 2005, 13:34
Delphi-Quellcode:
{
  Author  : Michael Puff - [url]http://developer.luckie-online.de[/url]
  Date    : 2005-12-12
  License : PUBLIC DOMAIN
}



function ConvertSidToStringSid(SID: PSID; var StringSid: LPSTR): Boolean; stdcall;
    external 'advapi32.dllname 'ConvertSidToStringSidA';

function GetAccountSid(const Server, User: WideString; var Sid: PSID): DWORD;
var
  dwDomainSize, dwSidSize: DWord;
  R : LongBool;
  wDomain : WideString;
  Use : DWord;
begin
  Result := 0;
  SetLastError(0);
  dwSidSize := 0;
  dwDomainSize := 0;
  R := LookupAccountNameW(PWideChar(Server), PWideChar(User), nil, dwSidSize,
    nil, dwDomainSize, Use);
  if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
  begin
    SetLength(wDomain, dwDomainSize);
    Sid := GetMemory(dwSidSize);
    R := LookupAccountNameW(PWideChar(Server), PWideChar(User), Sid,
      dwSidSize, PWideChar(wDomain), dwDomainSize, Use);
    if not R then
    begin
      FreeMemory(Sid);
      Sid := nil;
    end;
  end
  else
    Result := GetLastError;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  SID: PSID;
  strSID: PChar;
  s: String;
  err: DWORD;
begin
  err := GetAccountSid('hal9000', 'Michael', SID);
  if err = 0 then
  begin
    if ConvertSidToStringSid(SID, strSID) then
      s := strSID
    else
      s := SysErrorMessage(err);
  end
  else
    s := SysErrorMessage(err);

  ShowMessage(s);
end;
Aber das hatte ich doch gestern schon eingetragen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat