OpenProcess失败(SeDebugPrivilege?)

时间:2015-09-23 12:09:24

标签: c++ visual-studio visual-c++ visual-studio-2013 openprocess

我试图使用OpenProcess,因为某种原因它一直在失败。

HANDLE GetProcessPid()
{
    DWORD pid = 0;
    wchar_t ProcessName[] = L"notepad.exe";

    // Create toolhelp snapshot.
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 process;
    ZeroMemory(&process, sizeof(process));
    process.dwSize = sizeof(process);

    // Walkthrough all processes.
    if (Process32First(snapshot, &process))
    {
        do
        {
            if (wcscmp(process.szExeFile, ProcessName) == 0)
            {
                pid = process.th32ProcessID;
                break;
            }
        } while (Process32Next(snapshot, &process));
    }

    CloseHandle(snapshot);

    if (pid != 0)
    {
        return OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    }

    return NULL;
}

即使我在调用OpenProcess时手动设置了pid,也始终返回0xcccccccccccccccc或0x0000000000000020。

我已经尝试在视觉工作室内调试之外运行管理员并获得相同的结果,搜索后,我想我需要启用调试权限(SeDebugPrivilege),我如何在visual studio 2013中执行此操作? / p>

1 个答案:

答案 0 :(得分:0)

您的代码很好,您只需要以管理员身份运行可执行文件即可,并且我刚刚对其进行了测试。