Lek*_*eyn 3 c windows batch-file
在批处理脚本中,我需要获取具有给定二进制路径的进程 ID 列表C:\path\to\binary.exe。在 Linux 中,我可以这样做pidof /path/to/binary。
是否有一个 Win32 可执行文件具有相同的功能,支持从 WinXP Home 到 Win7(任务列表不起作用)?
包含此内容的软件包必须是可移植的,因此 10MB 的下载不是我想要的。
是否有可用的 C 函数可以执行此操作并且从 WinXP 到 Win7 均受支持?注意:我想匹配进程路径,而不是其他应用程序也可以使用的文件名。
wmic.exe 可在 XP、Vista 和 7 上使用,并且可以执行此操作。但是,它不随 Windows XP Home 版本一起提供。
wmic process where ExecutablePath='C:\\windows\\system32\\notepad.exe' get ProcessId
Run Code Online (Sandbox Code Playgroud)
如果您也想支持 Windows XP Home,您可以使用EnumProcess和GetModuleFileNameEx。这里的缺点是,如果您不以管理员身份运行,您将无法查询其他用户运行的进程的名称。QueryFullProcessImageName可能会在这里发挥作用,但它是 Vista+。
如果这还不够,您将需要Process32First(swatkat 的代码)。对于每个进程,您需要调用Module32First然后 get MODULEENTRY32->szExePath。请注意,即使这也不是完全可移植的,并且在需要QueryFullProcessImageName的 x64 上也无法正常工作。
| 归档时间: |
|
| 查看次数: |
5120 次 |
| 最近记录: |