我正在使用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上运行正常。如果有人能帮助解决这个问题,那将会很棒。
答案 0 :(得分:4)
这很可能与UAC有关。 OpenProcessToken
和AdjustTokenPrivileges
实际上是否成功?