bool Rise(BOOL fEnabled)
{
HANDLE handle;
DWORD buffer;
if (!OpenProcessToken(GetCurrentProcess(),/*TOKEN_ADJUST_PRIVILEGES*/TOKEN_ALL_ACCESS ,&handle))//这两个参数都试过
{
return FALSE;
}
TOKEN_PRIVILEGES Otoken, Ntoken;
Otoken.PrivilegeCount = 1;
Otoken.Privileges[0].Attributes = fEnabled ? SE_PRIVILEGE_ENABLED : 0;
if (!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Otoken.Privileges[0].Luid))
{
return FALSE;
}
if (!AdjustTokenPrivileges(handle,FALSE,&Otoken,sizeof(TOKEN_PRIVILEGES),
&Ntoken,&buffer))
{
return FALSE;
}
CloseHandle(handle);
return TRUE;
}
本人目地:用OpenProcess();打不开该进程及能结束系统提升过权的进程
这个东西我试了N次,都不行,是不是我有什么地方没注意到的,。请高手指点。
在这先给40分,若有满意答案在此决对加分

解决方案 »

  1.   

    看你要打开什么进程了
    如果进程有保护的话(比如Hook OpenProcess)那么即使提权也打不开的
      

  2.   

    你要调用OpenProcess()这个函数,要是人家hook了,在NEWOPENPROCESS里对你请求拒绝啦,你根本就得到那进程的句柄的。你可以也全局HOOK OPENPROCESS。
      

  3.   

    你可以去搜一下这个 “炉子的OpenProcess”
      

  4.   

    肯定是进程保护了,不信你用这个OpenProcess()打开DNF试试,打开才怪呢