最近因为公司有很多usb-hid设备都是自己定义的类型,自己写的驱动http://程序(当然并不是我写的),而且公司要求静默安装驱动,在从没接触过这些东西的情况下查找了大量的资料,从使用InstallHinfSection,到使用SetupCopyOEMInf,都能成功,但是最后被我找到了PnPUtil,而这就是最终解决问题的关键,
https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil,在windows官方有详细解释,当然也可以使用cmd运行pnputil /?来获取帮助。
解决问题就一个批处理语句:
@echo off
start %windir%\system32\pnputil.exe -i -a "%~dp0%MyDriver.inf"
写入批处理文件,将该文件放在自己的驱动文件夹中,以管理员权限运行就行:
其中%~dp0%指定的是当前bat文件所处目录,后面的MyDriver.inf就是需要安装的驱动文件了。
当然,必须保证驱动文件的正确,如果你的驱动是有签名的,那么这个过程就是一个静默的过程,完全没有任何的对话框。
安装完驱动之后,会自动识别设备管理器中与该驱动匹配的未识别设备。
补充一下:
如果想要在程序中使用命令行的方式调用PnPUtil.exe,就像下面这样:
startcmd(cmdPath, string.Format("-i -a " + _targetFile.FullName));
那么一定要注意系统的位数,32位系统只能调用使用x86编译的命令行调用程序,64位系统只能调用x64的,否则会出现运行命令行参数正确,但是运行程序却无法正确的调用的问题。