我正在尝试使用 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。
我尝试在 Visual Studio 内调试之外以管理员身份运行并获得相同的结果,搜索后,我认为我需要启用调试权限(SeDebugPrivilege),我该如何在 Visual Studio 2013 中执行此操作?