我想枚举 32 或 64(本地)机器上所有正在运行的进程。我应该更好地使用什么:WTSEnumerateProcesses 或 CreateToolhelp32Snapshot?
问问题
1544 次
1 回答
2
我会说 CreateToolhelp32Snapshot,它适用于除 NT4 之外的任何 Windows 版本。在 WinXP 上,WTSEnumerateProcesses 仅在终端服务器服务运行时工作(并且当它运行时,WTSEnumerateProcesses 会为您提供有关以非管理员身份运行时不应拥有的进程的信息,此漏洞在 Vista 中已关闭)
但是这两个函数没有给你相同的信息,所以这取决于你所追求的,在引擎盖下它们都只是调用半记录的ZwQuerySystemInformation
无论哪种方式,获取进程的完整路径都是有问题的(GetModuleFileNameEx 对于 WOW64 失败,GetProcessImageFileName 返回内核路径并有重命名问题,QueryFullProcessImageName 是 Vista+,并且据说在路径问题中有空间)
于 2011-02-01T17:38:57.823 回答