通过查询的CommandLine过程(Querying process by CommandLine

2019-11-02 17:52发布

我尝试做以下查询的WMI:

SELECT ProcessID from Win32_Process where CommandLine='C:\Windows\system32\calc.exe'

但是,我得到了一个“无效查询”错误。 我也试过用:

SELECT ProcessID from Win32_Process where CommandLine='C:\\Windows\\system32\\calc.exe'

而仍然得到同样的错误,我也试图改变单引号双引号,但没有奏效。

有谁知道,如果可能这样做的查询?

Answer 1:

Yes和No.取决于的calc.exe是如何催生。 举例来说,当我输入计算到的cmd.exe窗口,我的钙得到“钙”的命令行。 当我键入计算到powershell.exe控制台,它得到的完整路径。 该Win32_Process的“命令行”变量是不可靠的IMO。 这里有一些不同的结果来证明我的观点。

cmd.exe                              4028 C:\Windows\system32\cmd.exe  /K set
calc.exe                             2580 "C:\Windows\system32\calc.exe"
notepad.exe                          3612 "C:\Windows\system32\notepad.exe"
cmd.exe                              2864 "C:\Windows\system32\cmd.exe"
conhost.exe                           480 \??\C:\Windows\system32\conhost.exe
WMIC.exe                             3596 wmic
WmiPrvSE.exe                         2272 C:\Windows\system32\wbem\wmiprvse.exe
cmd.exe                              2296 "C:\Windows\system32\cmd.exe"
conhost.exe                          3708 \??\C:\Windows\system32\conhost.exe
notepad.exe                          1284 "C:\Windows\system32\notepad.exe"
calc.exe                             1736 calc
powershell.exe                       3136 "C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe"

因此,要使其工作,你需要一个OR子句在SQL语句中,符合“钙”或“C:\ WINDOWS \ SYSTEM32 \的calc.exe”



Answer 2:

此外视窗有时会添加额外的whitespace入后的命令行ExecutablePath和第一参数之前。

即使没有放慢参数和可执行用(因为引号lanched whitespaces的路径),那么在大多数情况下,命令行是ExecutablePath和最终whitespace结尾。

这损失了一些时间来找到这个。 干杯!



文章来源: Querying process by CommandLine