简体中文 | English
DriverIndexer 是一个高效、智能的驱动程序管理和安装命令行工具。它专注于解决传统驱动包安装速度慢、资源浪费的问题。
DriverIndexer的价值?传统的驱动包安装方式,需要将整个驱动包(可能包含几 GB 数据)全部解压,再调用 Dpinst 或类似工具进行安装,这不仅消耗大量时间,还浪费磁盘空间。
DriverIndexer 通过建立索引文件,实现了根据设备需求按需解压和自动安装的功能,极大地提升了安装效率。
索引文件是 DriverIndexer 的核心。由于硬件 ID 列表存储在 INF 文件内部,我们首先需要创建 硬件 ID 列表 与 驱动包内驱动文件路径
的对应关系。这一关系即是索引(JSON 格式)。
通过索引,程序能够迅速确定设备所需的驱动程序,从而实现精准的按需解压和安装。
我们更提倡自己下载、搜集驱动包,如有需求也可自行提取目前各个驱动软件内的驱动包(一般此类驱动包无版权)
以下为推荐的驱动包下载网站(均免费、无加密)
使用Rust语言编写,调用 WindowsAPI 获取硬件信息、安装设备驱动。
三次匹配(防止部分驱动未安装成功)
匹配硬件信息
本程序为命令行程序,故需要在其后面接参数运行,如直接双击程序将会出现“闪退”现象,您可通过cmd、PowerShell等终端来运行。
注意:请使用管理员身份运行终端。
索引文件通常在首次使用驱动包时创建,后续如驱动包内容发生变动,需要重建索引。
DriverIndexer.exe index <驱动包/目录路径> <索引文件保存路径>
| 参数 | 短参数 | 描述 |
|---|---|---|
--password <密码> |
-p |
指定驱动包密码,用于解压驱动包。 |
-- compress |
-c |
压缩索引文件`。 |
DriverIndexer.exe index D:\netcard D:\index.jsonDriverIndexer.exe index D:\netcard.7z D:\index.json使用索引文件或直接指定驱动包路径进行安装。
DriverIndexer.exe install <驱动包/目录路径> [选项]
*、?),用于匹配多个驱动包。不使用索引时将自动创建临时索引
选项
| 参数 | 短参数 | 描述 |
|---|---|---|
--index-path <路径> |
-i |
指定索引文件路径,用于加速安装。不指定时将自动创建临时索引。 |
--password <密码> |
-p |
指定驱动包密码,用于解压驱动包。 |
--class <类别> |
-c |
包含指定的驱动类别,仅安装匹配类别的驱动。多个类别可重复指定。 |
--exclude-class <类别> |
-e |
排除指定的驱动类别,不安装指定类别的驱动。多个类别可重复指定。 |
--missing-only |
-m |
仅安装未安装驱动的设备(即驱动缺失的设备)。 |
--extract-path <目录> |
-x |
仅解压驱动到指定目录,不执行安装操作。默认解压到临时目录。 |
--skip-verify |
-s |
跳过驱动索引文件验证,直接安装驱动。 |
--force |
-f |
强制安装,覆盖现有驱动。 |
DriverIndexer.exe install D:\netcardDriverIndexer.exe install D:\netcard.7zDriverIndexer.exe install D:\netcard\*.7zDriverIndexer.exe install D:\netcard.7z --index-path D:\netcard.jsonDriverIndexer.exe install D:\netcard\*.7z --index-path D:\netcard\*.json安装离线系统驱动库中的驱动,未指定系统盘则全盘搜索系统盘。
DriverIndexer.exe install-offline [系统盘路径]
| 参数 | 短参数 | 描述 |
|---|---|---|
--missing-only |
-m |
仅安装未安装驱动的设备(即驱动缺失的设备)。 |
--class <类别> |
-c |
包含指定的驱动类别,仅安装匹配类别的驱动。多个类别可重复指定。 |
--exclude-class <类别> |
-e |
排除指定的驱动类别,不安装指定类别的驱动。多个类别可重复指定。 |
查看索引子命令,用于查看驱动索引文件中的信息。
DriverIndexer.exe info <索引文件路径>
DriverIndexer.exe info D:\netcard.json列出当前系统或离线系统的驱动存储中的驱动。
DriverIndexer.exe list <系统盘路径>
| 参数 | 短参数 | 描述 |
|---|---|---|
--system |
-s |
包含系统自带的驱动。 |
--system-only |
- | 仅显示系统自带驱动。 |
--class <驱动类别> |
-c |
包含指定的驱动类别,仅显示指定类别驱动。多个类别可重复指定。 |
--exclude-class <驱动类别> |
-e |
排除指定的驱动类别,不显示指定类别驱动。多个类别可重复指定。 |
--provider <驱动供应商> |
-p |
包含指定的驱动供应商,仅显示指定供应商驱动。多个供应商可重复指定。 |
DriverIndexer.exe list C:\DriverIndexer.exe list C:\ --class netDriverIndexer.exe list C:\ --exclude-class netDriverIndexer.exe list C:\ --provider "Qualcomm, Inc."将驱动导入到系统驱动存储区。
DriverIndexer.exe import <系统盘路径> <驱动路径>
支持通配符(*、?),用于匹配多个驱动包。
选项
| 参数 | 短参数 | 描述 |
|---|---|---|
--password <密码> |
-p |
指定驱动包密码,用于解压驱动包。 |
--match-device |
-m |
匹配当前系统设备,默认匹配所有设备。 |
DriverIndexer.exe import C:\ D:\netcard.7zDriverIndexer.exe import C:\ D:\netcard\*.7zDriverIndexer.exe import C:\ D:\netcard.7z --password 123456从系统驱动存储中导出特定驱动。
DriverIndexer.exe export <系统盘路径> <导出目录>
| 参数 | 短参数 | 描述 |
|---|---|---|
--system |
-s |
包含系统自带的驱动。 |
--system-only |
- | 仅导出系统自带驱动。 |
--inf <inf文件名> |
-i |
指定驱动inf文件名,仅导出指定驱动。 |
--class <驱动类别> |
-c |
包含指定的驱动类别,仅导出指定类别驱动。多个类别可重复指定。 |
--exclude-class <驱动类别> |
-e |
排除指定的驱动类别,不导出指定类别驱动。多个类别可重复指定。 |
--provider <驱动供应商> |
-p |
包含指定的驱动供应商,仅导出指定供应商驱动。多个供应商可重复指定。 |
DriverIndexer.exe export C:\ D:\driversDriverIndexer.exe export C:\ D:\drivers --inf netcard.infDriverIndexer.exe export C:\ D:\drivers --class netDriverIndexer.exe export C:\ D:\drivers --exclude-class netDriverIndexer.exe export C:\ D:\drivers --provider "Qualcomm, Inc."从系统驱动存储中删除驱动。
DriverIndexer.exe remove <系统盘路径>
| 参数 | 短参数 | 描述 |
|---|---|---|
--system |
-s |
包含系统自带的驱动。 |
--system-only |
- | 仅删除系统自带驱动。 |
--inf <inf文件名> |
-i |
指定驱动inf文件名,仅删除指定驱动。 |
--class <驱动类别> |
-c |
包含指定的驱动类别,仅删除指定类别驱动。多个类别可重复指定。 |
--provider <驱动供应商> |
-p |
包含指定的驱动供应商,仅删除指定供应商驱动。多个供应商可重复指定。 |
--all |
-a |
删除所有驱动。 |
DriverIndexer.exe remove C:\ --inf netcard.infDriverIndexer.exe remove C:\ --class netDriverIndexer.exe remove C:\ --provider "Qualcomm, Inc."DriverIndexer.exe remove C:\ --all将 DriverIndexer 与驱动包合并,生成一个单一的 EXE 文件。这个 EXE 将自动运行,并按需解压和安装内置驱动。
DriverIndexer.exe pack <驱动包/目录路径> <输出EXE路径>
| 参数 | 短参数 | 描述 |
|---|---|---|
--password <密码> |
-p |
指定驱动包密码,用于加密驱动包。 |
DriverIndexer.exe pack D:\netcard D:\netcard.exeDriverIndexer.exe pack D:\netcard.7z D:\netcard.exe将文件夹中的驱动按驱动类别、厂商等规则分类,并根据 INF 文件中的信息进行重命名。
DriverIndexer.exe organize <驱动路径> <导出目录>
DriverIndexer.exe organize D:\netcard D:\netcard-organized为了保护驱动包密码,提供密码加密功能。加密后的密码可以在安装驱动包时指定 --password <加密后的密码>
参数使用。密码加密使用AES-128算法,确保密码安全性。
DriverIndexer.exe encrypt <密码>
DriverIndexer.exe encrypt 12345678DriverIndexer.exe install D:\netcard.7z --password enc:XXXXXDriverIndexer.exe [全局选项] 命令 [参数] [选项]
| 参数 | 短参数 | 描述 | 默认值 |
|---|---|---|---|
--debug |
无 | 调试模式,输出调试信息到控制台 | 无 |
--language |
无 | 设置程序语言 (En, zh-cn, zh-tw, ja-jp、ko-kr) |
自动识别 |
--log<日志文件路径> |
无 | 开启日志。将所有运行信息打印到指定文件中,方便排查问题。 | 无 |
以下是常见的驱动类别名称,可用于--class参数、--exclude-class参数指定驱动类别。
注意:
- 驱动类别名称不区分大小写,如
Display和display效果相同。- 驱动类别名称可以由驱动厂商定义,故没有限制驱动类别名称,请确保类别名称正确。
| 类别名称 | 描述 |
|---|---|
| Display | 显示适配器 |
| Net | 网络适配器 |
| HID | 人体学输入设备 |
| USB | USB 控制器 |
| Bluetooth | 蓝牙设备 |
| Printer | 打印机 |
| Imaging | 图像设备 |
| SCSIAdapter | SCSI 和 RAID 控制器 |
| DiskDrive | 磁盘驱动器 |
| Computer | 计算机 |
| Processor | 处理器 |
| Monitor | 监视器 |
| Keyboard | 键盘 |
| Pointer | 鼠标和其他指针设备 |
| Modem | 调制解调器 |
| Media | 多媒体设备 |
| System | 系统设备 |
新建 .env 文件,配置以下内容:
# 密钥,用于密码加密
# 此处密钥为示例,建议自定义密钥
SECRET_KEY = 0123456789ABCDEF0123456789ABCDEF
使用 cargo build --release 命令编译项目。编译完成后,在 target/release 目录下即可找到 DriverIndexer.exe 文件。
DriverIndexer 使用 GPL V3.0 协议开源,请尽量遵守开源协议。
$ claude mcp add DriverIndexer \
-- python -m otcore.mcp_server <graph>