0

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'

それでも同じエラーが発生します。また、一重引用符を二重引用符に変更しようとしましたが、うまくいきませんでした。

そのクエリを実行できるかどうかは誰にもわかりませんか?

4

2 に答える 2

0

はい、いいえ。calc.exe の生成方法によって異なります。たとえば、cmd.exe ウィンドウに calc と入力すると、calc は「calc」のコマンドラインを取得します。powershell.exe コンソールに calc と入力すると、フル パスが表示されます。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"

したがって、それを機能させるには、SQL ステートメントに「calc」または「C:\Windows\system32\calc.exe」に一致する OR 句が必要です。

于 2013-12-18T18:38:34.310 に答える