![]() |
eXeL@B —› Программирование —› Получние хендла прцоесса |
Посл.ответ | Сообщение |
|
Создано: 22 июня 2007 01:55 · Личное сообщение · #1 |
|
Создано: 22 июня 2007 02:15 · Поправил: OSA · Личное сообщение · #2 |
|
Создано: 22 июня 2007 02:55 · Поправил: Bitfry · Личное сообщение · #3 |
|
Создано: 22 июня 2007 08:21 · Личное сообщение · #4 |
|
Создано: 22 июня 2007 09:58 · Поправил: NetSpider · Личное сообщение · #5 Попробуй так. Для начала выполнить это int WINAPI EnableDebugPrivilegeNT() { HANDLE hToken; LUID DebugValue; TOKEN_PRIVILEGES tkp,PreviousState; DWORD ReturnLength = 0; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_Q UERY,&hToken)) return -2; if (!LookupPrivilegeValue(NULL,"SeDebugPrivilege",&DebugValue)) return -3; tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = DebugValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),&Pre viousState,&ReturnLength); if (GetLastError()!=ERROR_SUCCESS) return -4; return 0; } А процесс убивал кодом ниже ![]() CurProcessHandle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcStruct.th32ProcessID) я получил void WINAPI KillTasks(LPSTR Application) { HANDLE CurProcessHandle; HANDLE SnapshotHandle; PROCESSENTRY32 ProcStruct; if (!(SnapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))) return; ProcStruct.dwSize = sizeof(PROCESSENTRY32); if (Process32First(SnapshotHandle,&ProcStruct)) do{ if (!strcmp(ProcStruct.szExeFile,Application)){ if (!(CurProcessHandle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcStruct.th32ProcessID))) goto fastexit; TerminateProcess(CurProcessHandle,0); } }while (Process32Next(SnapshotHandle,&ProcStruct)); fastexit: CloseHandle(SnapshotHandle); return; } Только права админа нужны край... ![]() |
|
Создано: 22 июня 2007 15:34 · Личное сообщение · #6 |
|
Создано: 22 июня 2007 15:38 · Личное сообщение · #7 |
|
Создано: 22 июня 2007 16:46 · Личное сообщение · #8 |
|
Создано: 22 июня 2007 19:26 · Личное сообщение · #9 Ara OSA пишет: Некоторые процессы не позволяют получать Handle через OpenProcess (например процессы антивируса касперского). ![]() А вообще, если процесс не хочет, чтобы получили его хэндл, то получить его можно только скорее всего из ring0 (я имею ввиду, что не прийдется изобретать каких-то особо изощреных способов) Ara пишет: Мы не пишем вири Цитату в студию, где я говорю, что кто-то пишет вири. ![]() |
|
Создано: 22 июня 2007 19:36 · Личное сообщение · #10 |
|
Создано: 22 июня 2007 19:56 · Личное сообщение · #11 |
![]() |
eXeL@B —› Программирование —› Получние хендла прцоесса |