2012-04-22 14:36:24 +0000 2012-04-22 14:36:24 +0000
86
86

如何查找正在运行的程序的命令行参数?

我正在寻找一种工具或方法来找出已经传递给程序的命令行参数,例如当它被另一个程序运行时(启动程序-应用场景)。

答案 (7)

91
91
91
2012-12-15 17:29:14 +0000

你也可以在没有进程资源管理器的情况下,使用Windows的WMI服务来完成。在命令提示符下运行以下内容。

WMIC path win32_process get Caption,Processid,Commandline

如果你想把输出结果转存到一个文件中(让它更容易阅读),使用/OUTPUT开关:

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
``` 如果你想把输出结果转存到一个文件中(让它更容易阅读),使用/OUTPUT开关: 

0x1&
73
73
73
2012-04-22 14:39:21 +0000

你可以使用 进程资源管理器 .

只需将鼠标悬停在进程上,就可以看到用于启动它的命令行参数。

另外,你也可以打开进程的属性,检查命令行。

41
41
41
2015-10-03 07:28:36 +0000

也可以通过任务管理器实现。

打开任务管理器(通过CTRL-SHIFT-ESC、CTRL-ALT-DELETE或任何其他方法)。

对于Windows 7(可能还有Windows XP):

  • 进入 “进程 "选项卡。在 "View "菜单上,选择 "Select Columns…"。
  • 勾选 "命令行 "的复选框,然后点击 "确定"。

对于Windows 8:

  • 进入 "详细信息 "选项卡。右键单击任何一列(如名称、PID等)并选择 "选择列"。
  • 勾选 "命令行 "复选框并点击 "确定"。

一列命令行将被添加到当前显示的列中。

6
6
6
2014-08-07 05:46:54 +0000

PowerShell来拯救你。

查找:

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}

杀死作为奖励:

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }

你可以直接从powershell运行,或者从ps1运行,如果你已经设置好了系统。我详细介绍了在i kill zombies with powershell上的无限制脚本设置,以及其他powershell技巧……

5
5
5
2018-01-27 10:39:55 +0000

前面的回答是很好的,如果进程已经在运行,并且不会很快终止。然而,如果你需要(像我一样)这样做,也许是在进程多次启动和/或快速终止的情况下,或者是在较长的时间内记录发生的事件,有一种方法是使用 进程监控 .

基本上,它可以记录系统中的各种事件,在这种情况下,我们只需要过滤 “进程启动 "事件和我们想要监控的进程名称,如下图所示。

然后保持进程监控器的运行,然后做任何你想做的事情来让你想记录的进程运行。你可以在 "Detail "栏或 "Command line "栏中看到命令行参数(取决于你如何配置这些参数)。例如:

当然,这样一来,你可以提取更多的相关信息,比如工作目录是什么,进程上传递了哪些环境变量等等。同时也很容易将结果导出到文件中。

1
1
1
2014-04-07 15:07:04 +0000

当使用CygWin时,如果我启动一个Python进程,这是一个命令行的例子:

c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py

但是Process Explorer只看到主exe:

C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB

(注意“path: [错误打开进程信息]”(见EDIT-1))。tasklist的结果相同。

Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py

所以,到目前为止,我唯一知道的技巧,就是通过CygWin Bash shellpgrep找到它。

知道这个很有用,只要CygWin在Windows中没有问题,你可以用它来运行许多POSIX和Python程序。

EDIT: 在Windows中,你似乎不需要管理员权限的任务列表。在CygWin中,你需要它们才能查看管理员的进程(在我看来更合理的是:完整的命令行可以有一些参数,比如密码在里面),所以我们必须在提升 管理员模式下运行CygWin** Bash。

EDIT-1: 如果你以管理员身份运行Process Explorer,这个问题就不会发生。谢谢你的指点,@Pacerier。

-3
-3
-3
2012-11-02 04:46:45 +0000

转到run或goto start并搜索。

tasklist -m

tasklist -svc