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