如何检查是否安装了驱动程序?

10

我正在从事VPN项目...关于TUN/TAP,我有一个小问题。

在C#中,如何以编程方式检查/检测系统上是否安装了TUN/TAP驱动程序?

1个回答

21

您可以通过执行WQL SelectQuery来检查特定驱动程序是否已安装。

using System;
using System.Management;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Searching for driver...");

            System.Management.SelectQuery query = new System.Management.SelectQuery("Win32_SystemDriver");
            query.Condition = "Name = 'SomeDriverName'";
            System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher(query);
            var drivers = searcher.Get();

            if (drivers.Count > 0) Console.WriteLine("Driver exists.");
            else Console.WriteLine("Driver could not be found.");

            Console.ReadLine();
        }
    }
}
如果上述代码编译失败,请确保添加对System.Management程序集的引用。 您还可以找到以下参考资料有用: 获取计算机上安装的所有驱动程序 获取已安装驱动程序的列表|DaniWeb

我在我的计算机上安装了一个名为“NexusDB V3.09 Driver”的驱动程序,但是使用这种方式,我无法在列表中找到它。我有什么遗漏的吗? - Mahesh
这对我似乎不起作用 - 如果我卸载设备(并勾选“删除驱动程序”框),它仍然会被此查询找到。但是,如果我插入设备,则设置中的“设备”列表会显示“驱动程序不可用”,并且在重新安装驱动程序之前无法再次使用该设备。 - komodosp
2
我也发现,WQL 查询的结果并不总是与预期相匹配。我使用这个来扫描驱动程序,并提示用户安装,但经常返回找不到驱动程序,即使它们确实已安装,意味着每次启动软件时我的提示基本上都会显示出来。 有什么更新可以帮助解决这个问题吗? - TheBeardedQuack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,