我想枚举32或64(本地)计算机上的所有正在运行的进程。我应该更好地使用什么:WTSEnumerateProcesses或CreateToolhelp32Snapshot?
答案 0 :(得分:2)
我会说CreateToolhelp32Snapshot,它适用于任何Windows版本,除了NT4开箱即用。在WinXP上,WTSEnumerateProcesses仅在终端服务器服务运行时有效(并且当它运行时,WTSEnumerateProcesses将为您提供有关在非管理员运行时不应具有的进程的信息,此漏洞在Vista中已关闭)
但这两个函数并没有给你相同的信息,所以它取决于你所追求的是什么,在引擎盖下他们只是称之为半文件ZwQuerySystemInformation
获取进程的完整路径无论如何都是有问题的(对于WOW64,GetModuleFileNameEx失败,GetProcessImageFileName返回内核路径并且重命名问题,QueryFullProcessImageName是Vista +,并且在路径问题中有空间)