Показать сообщение отдельно
  #2  
Старый 12.05.2018, 20:18
Zorkov Igor Zorkov Igor вне форума
Новичок
 
Регистрация: 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;
Ответить с цитированием