我正在尝试找到如何执行此操作,我正在使用CreateToolHelp32SnapShot来获取正在运行的进程的列表,并且我已经获得了当前正在运行的可执行文件的FilePath,但我需要能够找出用于启动该过程的命令行选项。
我知道它可能,因为你可以在Process Explorer上看到它,我尝试找到旧的Process Explorer的源代码,但没有运气:(
答案 0 :(得分:5)
无法以可靠的方式获取正在运行的进程的命令行。通过更改存储这些命令的内存,可以更改正在运行的进程的命令行。
Raymond Chen最近就这个主题写了一篇很好的文章,详细说明了为什么它不可靠。
答案 1 :(得分:3)
检查NtQueryInformationProcess和ReadProcessMemory赢取API调用是否可以满足您的需求。没有简单的示例,请在此处查看源代码:Get Process Info with NtQueryInformationProcess
获取此数据的另一种方法是使用WMI,如下所示:
SELECT CommandLine FROM Win32_Process WHERE ProcessId = ???
此处有更多信息:Win32_Process Class
答案 2 :(得分:0)
几乎立即发生的一种可能性是将一个线程注入目标进程(CreateRemoteThread
),然后调用GetCommandLine
。
答案 3 :(得分:0)
IIRC命令行参数存储在过程环境中 - 如果您可以访问它,您也可以阅读它们。