C# ManagementObjectSearcher检测Sixnet的驱动程序

C# ManagementObjectSearcher检测Sixnet的驱动程序,c#,wmi,drivers,C#,Wmi,Drivers,这是我安装的软件得到的。我下载了Sixnet驱动程序包并安装了它。现在我想检测它是否实际安装了具有以下代码的驱动程序: var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPSignedDriver"); foreach (ManagementObject obj in searcher.Get()) { //Looking for Sixnet USB Ethernet/RNDIS Gadget. Onl

这是我安装的软件得到的。我下载了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;
我很确定今天早些时候它是真的,但现在我无法让这个街区工作,它没有检测到司机

在下面的代码中,我连接到NIC,这是可行的,但据我所知,只有在实际安装了驱动程序的情况下,才会连接到NIC,因为默认驱动程序不起作用

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

编辑:好的,我将obj.GetPropertyValueDescription更改为obj.GetPropertyValueDevicename,但它没有立即工作,所以我转到其他工作,10分钟后它工作了?如何刷新WMI数据库

编辑2:


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

为什么忽略异常?忽略异常,在哪里?我不明白你从哪里得到的…试试{…}捕捉例外e{}约翰,谢谢你的回复。我发现有时候oj.GetPropertyValueDescription不存在——我有一些代码没有删除,方法是现在。我将添加它作为编辑。WMI数据库会过时的原因是什么?如果searcher.Get.Count>0,则私有bool Check_Drivers{var searcher=new ManagementObjectSearcherSELECT*FROM Win32_pnpsignedriver,其中DeviceName类似“%Sixnet USB%”{searcher=null;return true;}searcher=null;return false;}我将整个方法更改为上面的代码。searcher=null;是我尝试确保对此方法的每次调用都重新加载管理对象。
    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;
    }