TerminateProcess权限问题
我用bho打开一个网页,然后关闭这个网页,代码如下
SHELLEXECUTEINFO sec;
ZeroMemory(&sec, sizeof(SHELLEXECUTEINFO));
sec.cbSize = sizeof(SHELLEXECUTEINFO);
sec.hwnd = NULL;
sec.lpVerb = "open";
sec.lpFile = "explorer.exe";
sec.lpParameters = m_url;
sec.lpDirectory = NULL;
sec.fMask = SEE_MASK_NOCLOSEPROCESS;
sec.nShow = SW_MAXIMIZE;
if ( !ShellExecuteEx( &sec ) )
{
MessageBox(NULL,"create process failed","error",MB_OK);
m_vist = false;
break;
}
Sleep(2000);
int err = TerminateProcess( sec.hProcess, 0);
结果 err = 0
getLastErr返回5,无权限关闭,请问怎么提升sec.hProcess句柄权限
[最优解释]
尝试提权代码
BOOL EnableDebugPrivilege()
{
HANDLE token;
//提升权限
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token))
{
MessageBox(NULL,"打开进程令牌失败...","错误",MB_ICONSTOP);
return FALSE;
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid);
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(token,FALSE,&tkp,sizeof(tkp),NULL,NULL))
{
MessageBox(NULL,"调整令牌权限失败...","错误",MB_ICONSTOP);
return FALSE;
}
CloseHandle(token);
return TRUE;
}