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

Delphi Sources



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

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

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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;
Онзавершает процессы кроме системных, но на строчке отмеченной "Вот тут" при компиляции выдает ошибку
Код:
1
[dcc32 Error] Unit1.pas(52): E2250 There is no overloaded version of 'AdjustTokenPrivileges' that can be called with these arguments
Посмотрел в интернете вроде все правильно описано, что не так?
Ответить с цитированием
  #2  
Старый 16.02.2015, 18:40
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ты типы аргументов правильно указал (var/out параметры и т.п.)?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


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

Прошу прощения, поясните? не совсем понял вас)
Ответить с цитированием
  #4  
Старый 16.02.2015, 20:39
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Перевод ошибки: это не перегружаемый вариант функции, которая может быть вызвана с этим набором аргументов, comprende?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 17.02.2015 в 08:30.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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