驱动安装工具

微软的 WDK 里提供了三个驱动安装工具

  • devcon
  • difxcmd
  • dpinst

devcon

devcon 是通过 SetupApi.dll 里的 UpdateDriverForPlugAndPlayDevicesW 来安装驱动。

difxcmd

difxcmd 是通过 difxapi.lib 里的 DriverPackageInstall 来安装驱动

difxapi.lib 提供了一组 api 用来预安装和安装驱动。

difxcmd.exe to display how to use the command line tool.
difxcmd.exe /p my.inf to preinstall my.inf.
difxcmd.exe /i my.inf to install my.inf.
difxcmd.exe /i my.inf 16 to install my.inf in legacy mode (accepting unsigned drivers).
difxcmd.exe /g my.inf to obtain the path to the installed my.inf.
difxcmd.exe /u my.inf to uninstall my.inf.

dpinst

dpinst 是微软提供了命令行程序,没有提供相关的源码。

dpinst.exe /Q /SE /F

使用静默方式安装不了驱动,必须要有交互 UI。

pnputil

pnputil 用来从 C:\Windows\System32\DriverStore\FileRepository 中删除驱动和预安装驱动

Microsoft PnP 工具
用法:
------
pnputil.exe [-f | -i] [ -? | -a | -d | -e ] <INF 名称> 
示例:
pnputil.exe -a a:\usbcam\USBCAM.INF      -> 添加 USBCAM.INF 指定的程序包
pnputil.exe -a c:\drivers\*.inf          -> 添加 c:\drivers\ 中的所有程序包\
pnputil.exe -i -a a:\usbcam\USBCAM.INF   -> 添加和安装驱动程序包
pnputil.exe -e                           -> 枚举所有第三方程序包
pnputil.exe -d oem0.inf                  -> 删除程序包 oem0.inf
pnputil.exe -f -d oem0.inf               -> 强制删除程序包 oem0.inf
pnputil.exe -?                           -> 此用法屏幕

dism

pnputil -e 或者
dism /Online /Get-Drivers /Format:Table 可列出驱动

pnputil -d oem9.inf pnputil 只能删除 oem开头的驱动

批量删除 %systemroot%\system32\DriverStore\FileRepository

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

ECHO.
ECHO  Deleting added FileRepository folders in PE3 to free drive X:\ - Wait ....
ECHO.

takeown /f "%systemroot%\system32\DriverStore\FileRepository" && icacls "%systemroot%\system32\DriverStore\FileRepository" /grant administrators:F
takeown /f "%systemroot%\system32\DriverStore\FileRepository" /r /d y && icacls "%systemroot%\system32\DriverStore\FileRepository" /grant administrators:F /t

dir %systemroot%\system32\DriverStore\FileRepository /b >dellist.txt
for /F "usebackq delims=" %%A in ("dellist.txt") do (
   RD /S /q %systemroot%\system32\DriverStore\FileRepository\%%A
)
DEL dellist.txt
ECHO.
ECHO  Deleting added FileRepository folders has finished - OK
ECHO.

:: pause

exit
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 每当只有自己一个人的时候 总有太多的想法 想想人生该怎么走 为什么那么晚才开始为未来担忧 我放弃了什么 又得到了什...
    三小妹阅读 184评论 0 0
  • 离开的人都去往了哪里 未来什么时候会来 飞驰吧 故事也是 光阴也是 你我也一样 像我们一起走过的路 落叶也化作春泥...
    纪陆阅读 377评论 0 0
  • 娱乐圈是个神奇的所在,给多少人带来期望,也给多少人带来失望。 好男人林丹出轨了,吃瓜群众忙于围观的同时,又有多少人...
    夏苏末阅读 1,261评论 8 14