|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Список привилегий процессов
Необходимо получить сабж. В общем вся проблема здесь:
Код:
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(DisplayName); массив Privileges имеет размер = 1. Выводит одну привилегию и делает RangeCheckError. Подскажите, пожалуйста, как получить все установленные привилегии для процесса. |
#2
|
||||
|
||||
Вот что сообщает DelphiWorld:
Код:
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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
видел данный код, с ним и работаю
Код:
LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize); |
#4
|
||||
|
||||
Данный код нормально работает в Дельфи 7 и капризничает в 2009-ом. Нужно разбираться с этим.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
может длинные строки?
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
||||
|
||||
Не стал долго мудрить изменил так:
Код:
var St : String; ... St := PrivName; St := St + #9 + DisplayName; ListBox1.Items.Add(St); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
вывод в листбокс у меня и так работает. траблы со списком привилегий...
у вас выводит все доступные привилегии процессу? |
#8
|
||||
|
||||
Все.......
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |