我的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'