Почему, когда я использую функцию KillProcByPid из вопроса "Как "убить" процесс, зная его pid?", некотрые процессы не "помирают"?
Автор: OlegGG
Исходная ссылка: - - -
Да, такое может случиться, если попробовать "грохнуть", например, winlogon.exe.
Всё решается выполнением этой функции перед вызовом KillProcByPid:
bool SetDebugStatusForCurentProc()
{
HANDLE hToken;
LUID DebugValue;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |
TOKEN_QUERY,&hToken))
{
return false;
}
if (!LookupPrivilegeValue((LPSTR) NULL,SE_DEBUG_NAME,&DebugValue))
{
return false;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = DebugValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES)
NULL,(PDWORD) NULL);
if (GetLastError() != ERROR_SUCCESS)
{
return false;
}
return true;
}
PS перед тем как убивать винлогон сохраните ваши файлы
PPS если убить винлогон, будет ребут :D
PPPS за последствия я ответственности не несу!!!!!!!! :P
|