这是我安装的软件。我下载了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调制解调器。谢谢
编辑:好的,我将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;我试图确保每次调用此方法都会重新加载管理对象。