
16.02.2015, 18:33
|
Прохожий
|
|
Регистрация: 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
Посмотрел в интернете вроде все правильно описано, что не так?
|