如何结束 system级 的进程 ?
如何结束 system 用户组的进程?如winlogon.exe, svchost.exe等
我用的主要代码如下:
void CGgdDlg::OnOK()
{
UpdateData(TRUE); //获取用户输入的要结束的进程名字
HANDLE handle; //定义CreateToolhelp32Snapshot系统快照句柄
HANDLE handle1; //定义要结束进程句柄
EnablePriv(); //提升本进程权限
handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获得系统快照句柄
PROCESSENTRY32 *info; //定义PROCESSENTRY32结构字指
info=new PROCESSENTRY32;
info->dwSize=sizeof(PROCESSENTRY32);
Process32First(handle,info); //从快照中获取进程列表
while(Process32Next(handle,info) != FALSE)//重复调用 Process32Next
{
info->szExeFile; //指向进程名字
if( m_edit == info->szExeFile )
{
handle1=OpenProcess(PROCESS_TERMINATE,FALSE,info->th32ProcessID);
TerminateProcess(handle1,0); //结束进程
}
}
CloseHandle(handle);
CDialog::OnOK();
}
BOOL CGgdDlg::EnablePriv()
{
HANDLE hToken;
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid ); //修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL ); //通知系统修改进程权限
return( (GetLastError()==ERROR_SUCCESS) );
}
else
return FALSE;
}
这样的代码只能结束 普通用户组 的进程,象记事本,cmd.exe等
我该如何让它可以结束 system 组的进程呢?
谢谢回答^_^