Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.02.2015, 18:33
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию ошибка в AdjustTokenPrivileges

Есть код, вот он

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
     Token           : THandle;
     TokenPrivileges : TTokenPrivileges;
     ProcessHandle   : THandle;
     TokenHandle     : THandle;
     SID             : _SID_AND_ATTRIBUTES;
     Buff            : pointer;
     Snap,d,TypeUser : DWORD;
     Process         : TPROCESSENTRY32;
     user,domain     : array[0..MAX_PATH] of char;
 begin
     if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
     begin
       if LookupPrivilegeValue(nil, PChar('SeDebugPrivilege'), TokenPrivileges.Privileges[0].Luid) then
       begin
         TokenPrivileges.PrivilegeCount := 1;
         TokenPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
         if AdjustTokenPrivileges(Token, false, TokenPrivileges, 0, PTokenPrivileges(nil)^, PDWord(nil)^) then//<- Вот тут
         begin
           Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
           if Snap <> INVALID_HANDLE_VALUE then
           begin
             Process.dwSize := SizeOf(TPROCESSENTRY32);
             if Process32First(Snap, Process) then
             repeat
               ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_TERMINATE,false,Process.th32ProcessID);
               OpenProcessToken(ProcessHandle,TOKEN_QUERY,TokenHandle);
               Buff:= HeapAlloc(GetProcessHeap,0,cbBuff);
               if GetTokenInformation(TokenHandle,TokenUser,buff,cbBuff,d) then
               begin
                 SID := SID_AND_ATTRIBUTES(buff^);
                 d := cbBuff;
                 TypeUser:= SidTypeUser;
                 if LookupAccountSid(nil,sid.Sid,user,d,domain,d,TypeUser) then
                 begin
                   if (lstrcmp(user,'SYSTEM') <> 0) and
                      (lstrcmp(user,'система') <> 0) and
                      (lstrcmp(user,'NETWORK SERVICE') <> 0) and
                      (lstrcmp(user,'LOCAL SERVICE') <> 0)
                   then
                   begin
                     MessageBox(0,user,#0,0);  // показать пользователя процесса
                     TerminateProcess(ProcessHandle,0);// завершить процесс
                   end;
                 end;
               end;
               CloseHandle(TokenHandle);
               CloseHandle(ProcessHandle);
             until
               not Process32Next(Snap, Process);
             CloseHandle(Snap);
           end;
         end;
       end;
     end;
end;
Онзавершает процессы кроме системных, но на строчке отмеченной "Вот тут" при компиляции выдает ошибку
Код:
[dcc32 Error] Unit1.pas(52): E2250 There is no overloaded version of 'AdjustTokenPrivileges' that can be called with these arguments
Посмотрел в интернете вроде все правильно описано, что не так?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025