c# - "Invalid query"无明确原因的异常

标签 c# .net wmi

下一个 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"]);
        }

最佳答案

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

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)这是此处公认的答案,因此它可能也适合您。

关于c# - "Invalid query"无明确原因的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964637/

相关文章:

windows - 如何让 HTA 自行重启?

C# 划分两个二进制数

c# - 如何使用 C# 在 Mysql 中将字符串值保存为 Datetime

.net - 如何在 .NET Core 类库中使用 System.Windows.Forms

php - 确定用于 PHP DOTNET 的程序集名称

powershell - 在远程Windows Server上创建本地用户并添加到管理员组

c# - 通过 WMI 确定网络适配器类型

C# 以 int 数组作为索引过滤循环的更快方法?

c# - 有没有办法调用重写方法的父版本? (C#.NET)

C# if-null-then-null 表达式