Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как вывести список привелегий?


Автор: Poseidon 19.5.2005, 03:49
Код
procedure TForm1.Button1Click(Sender: TObject); 
const 
  TokenSize = 800; //  (SizeOf(Pointer)=4 *200) 
var 
  hToken: THandle; 
  pTokenInfo: PTOKENPRIVILEGES; 
  ReturnLen: Cardinal; 
  i: Integer; 
  PrivName: PChar; 
  DisplayName: PChar; 
  NameSize: Cardinal; 
  DisplSize: Cardinal; 
  LangId: Cardinal; 
begin 
  GetMem(pTokenInfo, TokenSize); 
  if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, 
    hToken) then ShowMessage('OpenProcessToken error'); 
  if not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then 
    ShowMessage('GetTokenInformation error'); 
  GetMem(PrivName, 255); 
  GetMem(DisplayName, 255); 
  for i := 0 to pTokenInfo.PrivilegeCount - 1 do 
  begin 
    DisplSize := 255; 
    NameSize  := 255; 
    LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize); 
    LookupPrivilegeDisplayName(nil, PrivName, DisplayName, DisplSize, LangId); 
    ListBox1.Items.Add(PrivName +^I + DisplayName); 
  end; 
  FreeMem(PrivName); 
  FreeMem(DisplayName); 
  FreeMem(pTokenInfo); 
end; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)