gpt4 book ai didi

c# - WQL Like 语句和语法

转载 作者:行者123 更新时间:2023-11-30 22:20:31 29 4
gpt4 key购买 nike

我已经看到至少两个关于 WMI 的其他问题,但没有一个能回答我的问题,所以在这里;

我在我的代码中试验了 WMI 接口(interface)。基本上这就是我现在所拥有的并且它有效。但在我看来我可以更有效地编写它:


公共(public) bool GetUsbStateById(字符串 ID)
{
bool returnValue = false;



 尝试
{
ObjectQuery query = new ObjectQuery();
query.QueryString = string.Format("选择 * 来自 Win32_PnPDevice");
ManagementObjectSearcher mySearcher = new ManagementObjectSearcher(query);

List 结果 =(来自 ManagementObject mo in mySearcher.Get().AsParallel()
其中 mo["SystemElement"].ToString().ToUpper().Contains(id.ToUpper())
选择 mo).ToList();

如果(结果。计数> 0)
返回值 = 真;
}
catch (异常前)
{
//TODO: 实现日志记录
}

返回返回值;
}

所以这里发生的是我从 ManagementObjectSearcher 获得了 ManagementObjects 的列表。这工作正常,并且返回准确的结果,正如我所期望的那样。

但这对我来说似乎是多余的。因为,首先我得到整个列表,然后过滤它。但是因为它使用 WQL 来填充列表,我假设我可以实现这样的东西:


query.QueryString = string.Format("Select * From Win32_PnPDevice where SystemElement Like '%{0}%'",id);

这会不断抛出查询不正确的异常

所以我尝试了这个:


query.QueryString = string.Format("从 Win32_PnPDevice 选择 SystemElement);

这也行得通,所以接下来我尝试了 Win32_PnPDevice.SystemElement,但这也行不通。

我在网上看到的任何例子都是这样的


选择 * 来自 Win32_Service
名称如“%SQL%”

但 c# 无法解析围绕 %SQL% 语句的双引号,使用 \ 转义字符也没有产生任何结果。

为了测试我的代码和下面发布的代码,我使用了 WMI Code Creator来自微软

最佳答案

如果你想运行likeWMI 中查询然后你可以使用下面的例子:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
string strSearchText="win";
string strSearchQuery=string.Format("SELECT * FROM Win32_Service where Name like '%{0}%'",strSearchText);
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",strSearchQuery );

foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_Service instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Name: {0}", queryObj["Name"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}

但是您不能在Win32_PNPDevice 上应用like 查询作为discussed

关于c# - WQL Like 语句和语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14937699/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com