我尝试做以下查询的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'
而仍然得到同样的错误,我也试图改变单引号双引号,但没有奏效。
有谁知道,如果可能这样做的查询?
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”
此外视窗有时会添加额外的whitespace
入后的命令行ExecutablePath
和第一参数之前。
即使没有放慢参数和可执行用(因为引号lanched whitespaces
的路径),那么在大多数情况下,命令行是ExecutablePath
和最终whitespace
结尾。
这损失了一些时间来找到这个。 干杯!