首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

TerminateProcess权限有关问题

2012-12-14 
TerminateProcess权限问题我用bho打开一个网页,然后关闭这个网页,代码如下SHELLEXECUTEINFO sec ZeroMemo

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打开公司墙掉的网页,呵呵,被墙了有时差资料挺麻烦的

热点排行