12.05.2018, 20:18
|
Новичок
|
|
Регистрация: 28.07.2009
Сообщения: 85
Репутация: 50
|
|
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
FProcessHandle, FTokenHandle: THandle;
FReturnLength: DWORD;
FUserToken: PTokenUser;
FStringSid: LPWSTR;
begin
FProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, True, GetCurrentProcessId);
if FProcessHandle = 0 then
begin
RaiseLastOSError;
Exit;
end;
if OpenProcessToken(FProcessHandle, TOKEN_QUERY, FTokenHandle) = False then
begin
RaiseLastOSError;
Exit;
end;
GetTokenInformation(FTokenHandle, TokenUser, nil, 0, FReturnLength);
if FReturnLength = 0 then
begin
RaiseLastOSError;
Exit;
end;
GetMem(FUserToken, FReturnLength);
try
if not GetTokenInformation(FTokenHandle, TokenUser, FUserToken, FReturnLength, FReturnLength) then
begin
RaiseLastOSError;
Exit;
end;
if not ConvertSidToStringSid(FUserToken^.User.Sid, FStringSid) then
begin
RaiseLastOSError;
Exit;
end;
finally
FreeMem(FUserToken);
end;
MessageBox(Handle, FStringSid, nil, 0);
end;
|