Folgende Funktion wandelt eine
SID, die als String vorliegt, in den entsprechenden Namen um. Aus 'S-1-5-32-544' wird also "Administratoren". Desweiteren wird der Typ der
SID zurückgegeben.
Delphi-Quellcode:
{
Author : Michael Puff - [url]http://www.michael-puff.de[/url]
Date : 2006-03-01
License : PUBLIC DOMAIN
}
function ConvertStringSidToSid(StringSid: PWideChar;
var Sid: PSID): Boolean;
stdcall;
external '
advapi32.dll'
name
'
ConvertStringSidToSidW';
function StrSIDToName(
const StrSID: Widestring;
var Name:
string;
var SIDType: DWORD): Boolean;
var
SID : PSID;
Buffer : PChar;
NameLen, TempLen : Cardinal;
err : Boolean;
begin
SID =
nil;
err := ConvertStringSIDToSID(PWideChar(StrSID),
SID);
if err
then
begin
NameLen := 0;
TempLen := 0;
LookupAccountSidA(
nil,
SID,
nil, NameLen,
nil, TempLen, SIDType);
GetMem(Buffer, NameLen);
try
err := LookupAccountSidA(
nil,
SID, Buffer, NameLen,
nil, TempLen, SIDType);
if err
then
SetString(
Name, Buffer, Namelen);
finally
FreeMem(Buffer);
end;
end;
if Assigned(
SID)
then
LocalFree(Cardinal(
SID));
result := err;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Name :
string;
SIDType: DWORD;
begin
if StrSIDToName('
S-1-5-32-544',
Name, SIDType)
then
ShowMessage(
Name)
else
ShowMessage(SysErrorMessage(GetLastError));
end;
Weiterführende Links ins
PSDK:
ConvertStringSIDToSID,
LookupAccountSid.
Stichworte:
SID, ConvertStringSIDToSID, LookupAccountSid
[edit=Chakotay1308]KLassifizierung hinzugefügt. Mfg, Chakotay1308[/edit]