使用API函数TerminateProcess()结束一个指定PID进程的时候发现如下问题:
当程序以Administrator身份执行时,不能够结束以SYSTEM用户运行的进程,比如某些后台服务。
但是Administrator身份使用任务管理器却可以结束这些进程。
诸位DX能不能给个提示,能不能让进程在运行中切换用户至SYSTEM呢?或者有什么别的办法可以成功结束那些以SYSTEM身份运行的进程?
小弟使用的是C ,非C++
当程序以Administrator身份执行时,不能够结束以SYSTEM用户运行的进程,比如某些后台服务。
但是Administrator身份使用任务管理器却可以结束这些进程。
诸位DX能不能给个提示,能不能让进程在运行中切换用户至SYSTEM呢?或者有什么别的办法可以成功结束那些以SYSTEM身份运行的进程?
小弟使用的是C ,非C++
{
TOKEN_PRIVILEGES tkp;
HANDLE hToken;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) //打开当前进程失败
return FALSE;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid); //查看当前权限
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); //调整权限,如上设置
return TRUE;
}
我记得好像以Administrator身份执行的进程本身就有debug权限的吧?
我要结束的是进程是瑞星杀毒的后台服务进程To: LookSail
是不是写成服务程序以后就可以结束它了?
我可从来没写过服务呢~看来又要学习了:)