返回信息流在使用默认权限时,有一些进程会打不开,返回error5,“access denied”
后来在网上看到用AdjustTokenPrivileges提权
我的代码是这样的,按照msdn上的例子做的:
//更改权限
{
TOKEN_PRIVILEGES tp;
LUID luid;
HANDLE hToken;
if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))//获得对应的luid
{
MessageBox::Show("LookupPrivilegeValue","LookupPrivilegeValue Error",MessageBoxButtons::OK,MessageBoxIcon::Error) ;
}
//使能
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
if(!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL))
{
MessageBox::Show("AdjustTokenPrivileges","AdjustTokenPrivileges Error",MessageBoxButtons::OK,MessageBoxIcon::Error) ;
}
}
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
if(hProcess==NULL)
{
DWORD dw = GetLastError();
MessageBox::Show("OpenProcess Error","OpenProcess Error",MessageBoxButtons::OK,MessageBoxIcon::Error) ;
}
但是对于有些进程还是返回“access denied”?
我的系统是Vista。
有谁对这个比较熟悉的帮我看看,非常感谢。
这是一条镜像帖。来源:北邮人论坛 / cpp / #26917同步于 2009/8/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
OpenProcess以PROCESS_ALL_ACCESS获取进程句柄
bupo
2009/8/4镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
AdjustTokenPrivileges不是万能的
【 在 bupo (不破) 的大作中提到: 】
: 在使用默认权限时,有一些进程会打不开,返回error5,“access denied”
: 后来在网上看到用AdjustTokenPrivileges提权
: 我的代码是这样的,按照msdn上的例子做的:
: ...................