ManagementObjectSearcher用于检测Sixnet的驱动程序

时间:2014-02-08 03:33:28

标签: c# wmi drivers

enter image description here

这是我安装的软件。我下载了Sixnet驱动程序包并安装了它。现在我想检测它是否实际安装了以下代码的驱动程序:

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPSignedDriver");
foreach (ManagementObject obj in searcher.Get())
{
    //Looking for Sixnet USB Ethernet/RNDIS Gadget. Only try on objects that actually have a description.
    if (obj.GetPropertyValue("Description") != null)
    {
        try
        {
            if (obj.GetPropertyValue("Description").ToString().Contains("Sixnet USB Ethernet"))
            {
                return true;
            }
        }
        catch (Exception e)
        {

        }
    }
}
return false;

我很确定它今天早些时候恢复正常,但现在我无法让这个块工作,它没有检测到驱动程序。

在我连接到网卡的代码中降低,这是有效的,但我的理解是,如果驱动程序实际安装,它只会连接到网卡,因为默认驱动程序不起作用。

以下是我的网络连接,我可以将调制解调器视为网络5 - 名称中包含Sixnet的调制解调器。为什么我的代码不想显示驱动程序已安装?我想运行该软件以首先检查驱动程序是否已安装,然后我是否可以通过USB电缆连接到Sixnet调制解调器。谢谢

enter image description here

编辑:好的,我将obj.GetPropertyValue(“描述”)更改为obj.GetPropertyValue(“Devicename”)并且它没有立即生效所以我转到其他工作,10分钟后有效?如何刷新WMI数据库?

编辑#2:

    private bool Check_Drivers()
    {
        var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPSignedDriver where DeviceName LIKE '%Sixnet USB%'");
        if (searcher.Get().Count > 0)
        {
            searcher = null;
            return true;
        }
        searcher = null;
        return false;
    }

我将整个方法改为上面的代码。搜索者= null;我试图确保每次调用此方法都会重新加载管理对象。

0 个答案:

没有答案