查找命令行选项,启动进程

时间:2009-12-05 18:03:12

标签: c++ delphi winapi process process-explorer

我正在尝试找到如何执行此操作,我正在使用CreateToolHelp32SnapShot来获取正在运行的进程的列表,并且我已经获得了当前正在运行的可执行文件的FilePath,但我需要能够找出用于启动该过程的命令行选项。

我知道它可能,因为你可以在Process Explorer上看到它,我尝试找到旧的Process Explorer的源代码,但没有运气:(

4 个答案:

答案 0 :(得分:5)

无法以可靠的方式获取正在运行的进程的命令行。通过更改存储这些命令的内存,可以更改正在运行的进程的命令行。

Raymond Chen最近就这个主题写了一篇很好的文章,详细说明了为什么它不可靠。

答案 1 :(得分:3)

检查NtQueryInformationProcessReadProcessMemory赢取API调用是否可以满足您的需求。没有简单的示例,请在此处查看源代码:Get Process Info with NtQueryInformationProcess

获取此数据的另一种方法是使用WMI,如下所示:

SELECT CommandLine FROM Win32_Process WHERE ProcessId = ???

此处有更多信息:Win32_Process Class

答案 2 :(得分:0)

几乎立即发生的一种可能性是将一个线程注入目标进程(CreateRemoteThread),然后调用GetCommandLine

答案 3 :(得分:0)

IIRC命令行参数存储在过程环境中 - 如果您可以访问它,您也可以阅读它们。