Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi Win7的OpenProcess失败_Winapi_Windows 7 - Fatal编程技术网

Winapi Win7的OpenProcess失败

Winapi Win7的OpenProcess失败,winapi,windows-7,Winapi,Windows 7,我正在使用OpenProcess函数。该代码在windows XP中运行良好,但在win 7 X32位上失败 我的代码如下 void SetDebugPrivileges() { void* tokenHandle; TOKEN_PRIVILEGES privilegeToken; LookupPrivilegeValue(0, SE_DEBUG_NAME, &privilegeToken.Privileges[0].Luid); privilegeTo

我正在使用OpenProcess函数。该代码在windows XP中运行良好,但在win 7 X32位上失败

我的代码如下

void SetDebugPrivileges()
{
    void* tokenHandle;

    TOKEN_PRIVILEGES privilegeToken;
    LookupPrivilegeValue(0, SE_DEBUG_NAME, &privilegeToken.Privileges[0].Luid);
    privilegeToken.PrivilegeCount = 1;
    privilegeToken.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &tokenHandle);
    AdjustTokenPrivileges(tokenHandle, 0, &privilegeToken, sizeof(TOKEN_PRIVILEGES), 0, 0);
    CloseHandle(tokenHandle);
}

HANDLE _stdcall MyOpenProcess(DWORD dwAccess, BOOL bInherit, DWORD dwPID)
{
    SetDebugPrivileges();

   HANDLE hRes = OpenProcess(dwAccess | PROCESS_SET_INFORMATION | PROCESS_VM_READ, bInherit, dwPID);
}

OpenProcess在Win7上失败,错误代码为5,但在XP上运行良好。如果有人能帮助解决这个问题,那就太好了。

很可能这与UAC有关。
OpenProcessToken
AdjustTokenPrivileges
是否真正成功?

这很可能与UAC有关。
OpenProcessToken
AdjustTokenPrivileges
是否真的成功了?

请确认。。您正在使用管理权限运行应用程序?访问被拒绝。VM_读取和调试访问权限都是非常有特权的。请确保。。您正在使用管理权限运行应用程序?访问被拒绝。VM_读取和调试访问都具有非常高的权限。是的,OpenProcessToken和AjustTokenPrivileges两个函数都成功。。我仍然得到访问被拒绝的错误OK我注意到当我运行一个特定的可安装程序时,我在MyOpenProcess函数中得到了msiexec multiple time的进程Id。我得到了5次。因此,openProcess在msiexec.exe上运行了5次。其中4次GetLastError()返回成功,第5次返回拒绝访问。这就是问题所在吗?如果我多次打电话给openProcess,我需要小心吗?你能在你的原始帖子中添加更多细节,解释你到底想做什么以及问题发生的具体时间吗?这与MSI和msiexec.exe的关系如何,您何时调用
MyOpenProcess()
,等等。是的,OpenProcessToken和AjustTokenPrivileges两个函数都成功。。我仍然得到访问被拒绝的错误OK我注意到当我运行一个特定的可安装程序时,我在MyOpenProcess函数中得到了msiexec multiple time的进程Id。我得到了5次。因此,openProcess在msiexec.exe上运行了5次。其中4次GetLastError()返回成功,第5次返回拒绝访问。这就是问题所在吗?如果我多次打电话给openProcess,我需要小心吗?你能在你的原始帖子中添加更多细节,解释你到底想做什么以及问题发生的具体时间吗?这与MSI和msiexec.exe有什么关系,您何时调用
MyOpenProcess()
,等等。