读书人

TerminateProcess权限有关问题

发布时间: 2012-12-14 10:33:07 作者: rapoo

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;
}

[其他解释]
我的网摘在单位又打不开了,里面有一个我测试过的。悲剧,楼主先尝试下这个吧。
[其他解释]
引用:
我用bho打开一个网页,然后关闭这个网页,代码如下

SHELLEXECUTEINFO sec;
ZeroMemory(&sec, sizeof(SHELLEXECUTEINFO));
sec.cbSize = sizeof(SHELLEXECUTEINFO);
sec.hwnd = NULL;
sec.lpVerb = "open";
s……

谢谢,我先试下
[其他解释]
引用:
尝试提权代码

C/C++ code

BOOL EnableDebugPrivilege()
{
HANDLE token;
//提升权限
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token))
{
MessageB……





if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&(sec.hProcess)))
{
MessageBox(NULL,"打开进程令牌失败...","错误",MB_ICONSTOP);
goto FAILED_PROCCESS;
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid);
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(sec.hProcess,FALSE,&tkp,sizeof(tkp),NULL,NULL))
{
MessageBox(NULL,"调整令牌权限失败...","错误",MB_ICONSTOP);
goto FAILED_PROCCESS;
}


if (! CloseHandle(sec.hProcess))
{
MessageBox(NULL,"失败","error",MB_OK);
}
没有报错,但是网页没有被关闭,我的网页是在一个新的窗口弹出来的,早上公司在弄网络,服务器老不通,测试有点慢

可以用goagent打开公司墙掉的网页,呵呵,被墙了有时差资料挺麻烦的

读书人网 >VC/MFC

热点推荐