C#检测系统中某个特定驱动是否已安装
在winform与硬件交互的开发经常会遇到需要检测某设备在目标机上是否已经安装驱动,这就需要用到下面的方法了
/// <summary> /// 检测驱动是否已安装 /// </summary> /// <returns></returns> public bool LoadDriverList() { bool isInstall = false; try { RegistryHelper rh = new RegistryHelper(); string[] s = rh.LoadLocalMachineControlNames(); for (int i = 0; i < s.Length; i++) { string driverKey = @"\SYSTEM\CurrentControlSet\Control\Class\" + s[i]; RegistryKey rk = rh.OpenRegistryKey(driverKey); if (rk != null) { string[] drivers = rh.LoadLocalMachineControlNames(rk); rk.Close(); if (drivers.Length > 0) { for (int j = 0; j < drivers.Length; j++) { if (drivers[j].Length <= 4) { string driverKeys = driverKey + "\\" + drivers[j]; rk = rh.OpenRegistryKey(driverKeys); //驱动设备名称 string driverDesc = rk.GetValue("DriverDesc", "").ToString().Trim(); rk.Close(); rk = rh.OpenRegistryKey(driverKeys); if (driverDesc.Equals("HH400")) { isInstall = true; break; } } } } } } } catch (Exception ex) { throw ex; } return isInstall; }
其中“HH400”是国外一款叫做HoneyWell的扫描枪驱动程序的名称。这扫码枪在XP系统中需要手动安装驱动,所以在项目每当客户将扫码枪插入XP系统时我就需要对系统进行驱动检查,此时就需要用到这个方法。