【问题标题】:What's wrong with my WMI query?我的 WMI 查询有什么问题?
【发布时间】:2013-12-16 12:21:07
【问题描述】:

我正在尝试反转以下查询:

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 wmi-query


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2010-12-23
      • 2010-11-26
      • 2017-02-25
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多