我找不到任何关于此的文档。我正在枚举另一个进程中的进程句柄。
我检查了 Windows 版本之间的值,SYSTEM_HANDLE::ObjectTypeNumber
显然它是不同的。我在 GitHub 上的一个项目中找到了这段代码
// For XP & 2K3 : HANDLE_TYPE_PROCESS = 0x5
// For Vista & Longhorn : HANDLE_TYPE_PROCESS = 0x6
// Windows 8: HANDLE_TYPE_PROCESS = 0x7
#define HANDLE_TYPE_PROCESS 7
奇怪的是,它跳过了 Windows 7。我一直在检查各种与内核相关的书籍(例如 Windows Internals),但无法找到适用于 Windows 7 的正确值。我也没有 Windows 7 机器来测试。
因此,我的代码目前看起来像这样:
BYTE HANDLE_TYPE_PROCESS;
if(IsWindows8OrGreater()) HANDLE_TYPE_PROCESS = 7;
else if(IsWindowsVistaOrGreater()) HANDLE_TYPE_PROCESS = 6;
else HANDLE_TYPE_PROCESS = 5;
Windows 7 中进程句柄的对象类型号是多少?