胜利7的OpenProcess失败

时间:2010-11-22 10:29:27

标签: 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);
    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在win 7上失败,错误代码为5但在XP上运行正常。如果有人能帮助解决这个问题,那将会很棒。

1 个答案:

答案 0 :(得分:4)

这很可能与UAC有关。 OpenProcessTokenAdjustTokenPrivileges实际上是否成功?