我注意到从进程管理器中无法结束GoogleToolbarNotifier.exe,它会返回“拒绝访问”。它以用户身份运行,“正常”优先级运行,并且从Program Files中运行。
他们是如何做到的?
我认为可能有一种方法可以修改ACL,或将进程标记为“关键进程”,但我似乎找不到任何东西。
更新:
经过一番搜索,我找到了答案。@Alex K. 是正确的,因为进程的PROCESS_TERMINATE权限已被删除,但我想提供代码来解释答案:
他们是如何做到的?
我认为可能有一种方法可以修改ACL,或将进程标记为“关键进程”,但我似乎找不到任何东西。
更新:
经过一番搜索,我找到了答案。@Alex K. 是正确的,因为进程的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;
}