【问题标题】:"Invalid query" exception without clear reason没有明确原因的“无效查询”异常
【发布时间】:2015-08-12 12:00:37
【问题描述】:

下一个 WMi 查询有什么问题? (我得到“无效查询”管理异常)。

        const string deviceName = "04157DF42C9B1109";

        string wmiQuery = string.Format("SELECT * FROM Win32_USBControllerDevice WHERE Antecedent LIKE '%{0}%'", deviceName);

        ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
        ManagementObjectCollection retObjectCollection = searcher.Get();

        foreach (ManagementObject retObject in retObjectCollection)
        {
            Console.WriteLine("[{0}]:{1}", retObject["Antecedent"], retObject["Dependent"]);
        }

【问题讨论】:

  • 你有数据库连接吗?尝试简单地运行查询(不带 LIKE),甚至硬编码 LIKE 参数以进行测试
  • @NikosM。查询 syntasys 是有效的..您可以尝试在您的环境中。硬编码的类似作品
  • 查询不起作用,因为Antecedent 属性是对CIM 对象的引用,而LIKE 运算符只能在string 类型属性中使用。

标签: c# .net wmi


【解决方案1】:

我不知道如何修复原始错误,但可以使用以下方法作为解决方法:

string wmiQuery = string.Format("SELECT * FROM Win32_USBControllerDevice");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();

var retObjectList = retObjectCollection.Cast<ManagementObject>()
    .Where(m => ((string)m["Antecedent"]).Contains(deviceName))
    .ToList();

foreach (ManagementObject retObject in retObjectList)
{
    Console.WriteLine("[{0}]:{1}", retObject["Antecedent"], retObject["Dependent"]);
}

我注意到其他人也有同样的问题,有些人建议使用 ASSOCIATORS OF 语句(资源:https://superuser.com/questions/740564/wmi-query-based-on-antecedent-string)这是这里公认的答案,所以它也可能对你有用。

【讨论】:

  • 我现在正在使用相同的解决方法,但仍然很奇怪为什么不工作..这浪费时间
【解决方案2】:

id 建议你使用纯字符串而不是格式化它: 这个:

 string wmiQuery = "select * from Win32_USBControllerDevice where Antecedent like '%" + deviceName + "%'";

而不是这个:

 string wmiQuery = string.Format("SELECT * FROM Win32_USBControllerDevice WHERE Antecedent LIKE '%{0}%'", deviceName);

还有一件事:为什么需要在字符串上使用 const?也许这也可能是你的问题。

【讨论】:

  • 无论他是否使用String.Format 都不会改变任何东西.. 而String.Format 通常看起来更整洁..
  • 我无法调试他的代码,所以这只是我的一个想法。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 2012-10-22
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多