下一个 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/