我的WMI查询有什么问题?

问题描述:

我试图反转以下查询:我的WMI查询有什么问题?

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = 4856")) { 
    foreach (ManagementObject mo in searcher.Get()) { 
     Debug.WriteLine(mo["CommandLine"]); 
    } 
} 

它返回预期的结果:

C:\ WINDOWS \ EXPLORER.EXE

分为:

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT ProcessId FROM Win32_Process WHERE CommandLine = 'C:\\Windows\\Explorer.EXE'")) { 
    foreach (ManagementObject mo in searcher.Get()) { 
     Debug.WriteLine(mo["ProcessId"]); 
    } 
} 

它引发了一个Invalid query异常,而不是进程ID。

好吧,我只是想通了。我必须将查询中路径中的斜杠和转义字符加倍。

C#编译器和WMI SQL实现都需要转义斜线我猜。愚蠢的电脑。

SELECT ProcessId FROM Win32_Process WHERE CommandLine = 'C:\\\\windows\\\\explorer.EXE'