OpenProcess терпит неудачу для победы 7 - PullRequest
0 голосов
/ 22 ноября 2010

Я использую функцию OpenProcess. Код прекрасно работает в Windows XP, но не работает на Win 7 X32 bit.

Мой код выглядит следующим образом

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 с кодом ошибки 5 на win 7, но отлично работает на XP. Было бы здорово, если бы кто-нибудь мог помочь с этой проблемой.

1 Ответ

4 голосов
/ 22 ноября 2010

Скорее всего, это связано с UAC.OpenProcessToken и AdjustTokenPrivileges действительно успешны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...