Я заметил, что GoogleToolbarNotifier.exe нельзя убить из Process Explorer.Возвращает «Отказано в доступе».Он запускается как пользователь, запускает приоритет «Обычный» и запускается из Program Files.
Как они это сделали?
Я думаю, что может быть способ изменить ACL,или пометить процесс как «критический», но я не могу ничего найти.
Обновление:
Я нашел ответ с хорошим анализом.@ Алекс К. был прав в том, что разрешение PROCESS_TERMINATE было удалено для процесса, но я хотел предоставить ответ в коде:
static const bool ProtectProcess()
{
HANDLE hProcess = GetCurrentProcess();
EXPLICIT_ACCESS denyAccess = {0};
DWORD dwAccessPermissions = GENERIC_WRITE|PROCESS_ALL_ACCESS|WRITE_DAC|DELETE|WRITE_OWNER|READ_CONTROL;
BuildExplicitAccessWithName( &denyAccess, _T("CURRENT_USER"), dwAccessPermissions, DENY_ACCESS, NO_INHERITANCE );
PACL pTempDacl = NULL;
DWORD dwErr = 0;
dwErr = SetEntriesInAcl( 1, &denyAccess, NULL, &pTempDacl );
// check dwErr...
dwErr = SetSecurityInfo( hProcess, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pTempDacl, NULL );
// check dwErr...
LocalFree( pTempDacl );
CloseHandle( hProcess );
return dwErr == ERROR_SUCCESS;
}