c语言运行结果拒绝访问,2020-08-24 OpenProcess 返回拒绝访问的错误,一段代码提升权限即可访问...

有时需要使用OpenProcess来查看进程的相关信息,或者结束进程的运行,但是会碰到“拒绝访问”的错误,这时需要提升进程的权限为Debug权限。

BOOL EnableDebugPrivilege()

{

HANDLE hToken;

BOOL fOk=FALSE;

if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))

{

TOKEN_PRIVILEGES tp;

tp.PrivilegeCount=1;

LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);

tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);

fOk=(GetLastError()==ERROR_SUCCESS);

CloseHandle(hToken);

}

return fOk;

}

以上代码提升权限 OpenProcess让 可以访问!!!

//读取mir3进程得到人物当前坐标

int GetMir3Position () {

DWORD dwPid = 0;

GetWindowThreadProcessId(hwnd_mir3, &dwPid);

HANDLE hProcess;

EnableDebugPrivilege();

hProcess=OpenProcess( PROCESS_ALL_ACCESS| PROCESS_VM_READ, FALSE, dwPid);

MsgLastError();

if(hProcess==NULL) MessageBox(NULL,"hProcess==NULL","GetMir3Position!",MB_ICONEXCLAMATION|MB_OK);

byte  buff[8];

int num;

if(ReadProcessMemory(hProcess,0x027141C0,buff,8,NULL)) {

MessageBox(NULL,"","ReadProcessMemory!",MB_ICONEXCLAMATION|MB_OK);

return Point2int( *((int *)buff ), *((int *)(buff+4))  );

}

Beep(8000,500);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值