rundll32 调用的是 setupapi.dll 导出入口:InstallHinfSection,DefaultInstall 只是 INF 里面的段名。很多文档容易混淆两者。 命令原型:rundll32.exe setupapi,InstallHinfSection <SectionName> <ModeFlag> <InfPath>[,Param]
rundll32.exe setupapi,InstallHinfSection 完整解构
核心澄清:不存在独立导出函数 InfDefaultInstall;你文档里提到的
InfDefaultInstall是语义名称,rundll32 调用的是 setupapi.dll 导出入口:InstallHinfSection,DefaultInstall只是 INF 里面的段名。很多文档容易混淆两者。 命令原型:rundll32.exe setupapi,InstallHinfSection <SectionName> <ModeFlag> <InfPath>[,Param]分析框架:底层原理|依赖文件|依赖关系|配套链|逻辑链路|边界
一、底层原理
InstallHinfSection 是 setupapi.dll 专门为 rundll32 暴露的导出入口函数,用于从命令行执行 INF 任意[InstallSection]安装段。 rundll32 是通用 DLL 加载器:把命令行字符串解析,调用 DLL 导出函数,把参数打包传给InstallHinfSection。
核心概念拆解
- SectionName:INF 内的段名,例如
DefaultInstall/CustomInstall/UninstallInstall,函数会读取这个段下所有指令(CopyFiles/AddReg/DelReg/AddService等)。 - ModeFlag(数字 128):关键标记
128 = 0x80,含义:使用本地系统管理员上下文、不弹出交互对话框(静默基础模式);其他常用标记:0 = 交互式,1 = 备份,2 = 卸载。常见误区:128 不是静默,只是抑制部分 UI;INF 内部指令仍可能弹窗。
- InfPath[,Param]:INF 文件路径,逗号后是可选自定义参数,在 INF 内部可用
%1%引用。
执行模型: rundll32 仅做参数转发 + DLL 加载;真正 INF 解析、文件复制、注册表写入全部由 setupapi 内部引擎执行。
InstallHinfSection内部会调用 setupapi 底层 INF 执行引擎,等价于程序调用SetupInstallFromInfSectionAPI。 👉 关系:rundll32 setupapi,InstallHinfSection→SetupInstallFromInfSection(API) → 执行 INF 段指令。 网上常说的 InfDefaultInstall,就是调用 InstallHinfSection 执行 [DefaultInstall] 段这个场景的俗称,并不是单独 DLL 导出函数。
简化调用栈
cmd/powershell 执行 rundll32 命令
↓ rundll32.exe
↓ LoadLibrary(setupapi.dll)
↓ 获取导出地址 InstallHinfSection,传入3个参数
↓ setupapi.dll :: InstallHinfSection
↓ SetupInstallFromInfSectionW(核心底层API)
├─ INF解析引擎
├─ CopyFiles → drvstore.dll(驱动INF入库DriverStore)
├─ AddReg/DelReg → advapi32.dll
├─ AddService → advapi32.dll SCM服务注册
└─ RegisterDlls → LoadLibrary + DllRegisterServer
二、依赖文件
| 文件 | 路径 | 角色说明 |
|---|---|---|
rundll32.exe |
System32 | DLL 加载器,解析命令行、调用 setupapi 导出函数 |
setupapi.dll |
System32 | 宿主,导出InstallHinfSection,INF 解析引擎,核心 API SetupInstallFromInfSection |
drvstore.dll |
System32 | 驱动 INF 场景:CopyFiles 动作,将驱动包入库 DriverStore、签名校验、引用计数维护 |
advapi32.dll |
System32 | AddReg/DelReg 读写注册表;AddService 操作 SCM 服务控制管理器 |
crypt32.dll |
System32 | 驱动包数字签名校验,安全启动模式下强制校验 |
kernel32.dll / ntdll.dll |
System32 | 文件 IO、目录创建、字符串处理、宏展开、路径解析 |
cfgmgr32.dll |
System32 | 间接依赖,设备枚举、驱动包引用计数更新(不是本流程同步执行) |
pnp.sys |
内核 | 无直接调用;仅后续硬件扫描时才加载驱动,InstallHinfSection 不会触发设备枚举 |
运行时业务依赖
- INF 文件:必须存在你指定的
[SectionName]段,段名大小写不敏感,缺失直接返回失败。 - 权限:128 (0x80) 标记要求进程以管理员身份运行;非提升 rundll32 执行,HKLM 写入、驱动入库、AddService 全部拒绝。
- WOW64 重定向:32 位 rundll32(SysWOW64\rundll32.exe)会触发文件系统重定向,复制文件会定向到 SysWOW64,64 位驱动安装极易踩坑。
- 文件锁:目标文件正在被占用时,CopyFiles 会失败,部分 INF 可配置
CopyFiles=...,,,0x10(在重启替换文件)。
三、依赖关系
链路 1:经典命令,安装 [DefaultInstall] 段(驱动 INF)
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 C:\driver\test.inf
↓ rundll32加载setupapi,调用InstallHinfSection
↓ SetupInstallFromInfSectionW,读取INF [DefaultInstall]
↓ CopyFiles → drvstore.dll,复制驱动文件到FileRepository,校验哈希+签名
↓ AddReg → advapi32写入HKLM驱动注册表配置
↓ AddService → advapi32调用SCM注册内核驱动服务
↓ drvstore设置驱动包引用计数=0
链路 2:自定义段,执行 [UninstallInstall] 卸载段
rundll32.exe setupapi,InstallHinfSection UninstallInstall 128 C:\driver\test.inf
↓ InstallHinfSection
↓ 读取[UninstallInstall]段
↓ DelReg 删除注册表项
↓ CopyFiles(删除) 删除驱动文件(部分场景)
↓ advapi32调用SCM删除驱动服务
链路 3:带自定义参数,inf,MyParam
rundll32.exe setupapi,InstallHinfSection MyInstallAction 128 C:\driver\test.inf,MyProgram
↓ InstallHinfSection
↓ SetupInstallFromInfSection,把MyParam传入INF环境变量%1%
↓ INF内部可以读取%1%做分支判断
- 调用方向:命令行 → rundll32.exe → setupapi::InstallHinfSection → SetupInstallFromInfSection → drvstore /advapi32 /kernel32
- 单向调用:InstallHinfSection 不会反向调用 rundll32;执行结束后 setupapi 返回结果,rundll32 进程退出。
- 和 PnP 内核 pnp.sys:InstallHinfSection 不会触发硬件扫描、不会创建设备 DevNode、不会加载内核驱动。仅把驱动包放入 DriverStore 仓库,等待 pnp.sys 后续硬件枚举匹配。
⚠️ 重要误区纠正:
NoSignInstall、ForceInstall这类不是 InstallHinfSection 自带参数! 只是 INF 里面自定义段名;关闭驱动签名不是靠改段名,需要系统全局测试签名开启(bcdedit /set testsigning on),INF 段本身无法绕过驱动签名校验。ForceInstall强制覆盖,依靠 INF 段内 CopyFiles 的覆盖标记,不是命令行参数自带能力。
四、配套链
系统组件分工
| 组件 | 运行层 | 作用 |
|---|---|---|
| rundll32.exe | 用户态 | DLL 加载器,解析命令行,调用 setupapi 导出入口 InstallHinfSection |
| InstallHinfSection(setupapi.dll) | 用户态 | rundll32 专用导出入口,转发至 SetupInstallFromInfSection |
| SetupInstallFromInfSectionW | setupapi.dll | 底层核心 API,解析并执行 INF 指定安装段 |
| setupapi INF 解析引擎 | setupapi.dll | 解析 INF 文本、段、指令、字符串宏、%1% 参数替换 |
| drvstore.dll | 用户态 | 驱动 INF 场景,驱动包入库 DriverStore,签名 / 哈希校验、引用计数 |
| advapi32.dll | 用户态 | 注册表读写、SCM 服务注册 / 删除 |
| cfgmgr32.dll | 用户态 | 设备枚举、驱动引用计数更新(独立流程,不在本链路) |
| pnp.sys | 内核 | 硬件枚举、设备栈创建、驱动加载(独立流程) |
安全视角
- 攻击面:管理员权限下执行恶意 INF,可通过 AddReg、AddService 注册恶意内核驱动 / COM 组件,是经典本地提权 / 持久化手法。
- 命令行无内置校验:INF 内容完全可控,段名仅为文本标记,段内指令由 INF 定义。
- 数字签名校验:段名无法绕过驱动签名,
NoSignInstall只是自定义段名,不能关闭系统驱动签名策略。
五、逻辑链路
完整执行时序
- 用户在 CMD/PowerShell 执行 rundll32 命令。
- rundll32 解析命令行,拆分:导出函数名、SectionName、ModeFlag、INF 路径与可选参数。
- rundll32 加载 setupapi.dll,定位
InstallHinfSection导出函数,传入参数。 InstallHinfSection做参数校验,调用底层SetupInstallFromInfSectionW。- SetupAPI 引擎加载 INF 文件,查找指定
[SectionName]段,校验语法。 - 按 INF 段内指令顺序逐条执行:
- CopyFiles:驱动类 INF 路由 drvstore 入库;普通文件直接复制。
- AddReg / DelReg:调用 advapi32 修改注册表。
- AddService / DelService:调用 SCM 注册 / 删除服务。
- RegisterDlls:加载 DLL 执行 COM 组件注册。
- 全部指令执行完毕,返回执行状态码给 InstallHinfSection。
- InstallHinfSection 返回给 rundll32,rundll32 进程退出。
关键点: 执行完成,驱动仅入库,不会自动加载、不会自动创建设备节点; 如需生效,要么重启,要么
pnputil /scan触发 pnp.sys 硬件扫描匹配驱动。
六、边界(约束、坑点、失效条件)
1. 命令参数边界
- ModeFlag=128(0x80):静默模式标记,但不是完全无 UI;部分 INF 指令仍可弹出对话框。0 = 交互式,会弹出安装向导。
- 自定义段名仅为文本标记:
QuietInstall/ForceInstall只是 INF 段名字,没有内置特殊逻辑,行为完全由 INF 内部指令决定。 - 逗号参数
inf,MyParam:仅用于 INF 内部%1%变量,不能传递给底层 SetupAPI 作为开关。
2. 权限边界
- ModeFlag=128 场景,rundll32 进程必须右键以管理员身份启动;普通用户执行,写入 HKLM、DriverStore、创建服务全部拒绝。
- 仅修改 HKCU 注册表的简单 INF,普通用户有可能执行成功。
3. 驱动签名边界(高频坑)
❌ 修改段名 NoSignInstall 不能关闭驱动签名校验。 ✅ 关闭驱动签名需要系统层面:测试签名开启 bcdedit /set testsigning on 或临时高级启动禁用强制签名。INF 段本身无能力绕过。
4. 事务与回滚边界
- 没有原子事务:指令是顺序执行;中间某一步失败,前面已经执行的注册表、文件改动不会自动回滚,会产生系统残留。
- CopyFiles 支持重启替换:INF 可配置文件在下次启动替换正在占用的系统文件。
5. 职责边界
✅ InstallHinfSection:执行指定 INF 安装段的指令集(文件复制、注册表、服务注册) ❌ InstallHinfSection:不扫描硬件、不创建 DevNode、不加载内核驱动、不处理 PNP IRP
6. 高频认知误区汇总
- ❌ InfDefaultInstall 是独立 DLL 导出函数;✅ InfDefaultInstall 是俗称,本质调用 InstallHinfSection 执行 [DefaultInstall] 段。
- ❌
NoSignInstall段可以跳过驱动签名;✅ 段名只是名字,签名校验由 drvstore+crypt32 + 系统安全策略控制。 - ❌ 执行完 rundll32 命令,驱动自动加载生效;✅ 仅入库,需要 pnp.sys 设备匹配后才加载。
- ❌ rundll32 是执行 INF 的内核组件;✅ rundll32、setupapi 全部是用户态程序。
- ❌
ForceInstall参数自带强制覆盖;✅ 覆盖行为是 INF CopyFiles 指令标记控制,不是命令自带功能。
InstallHinfSection 组件分工简表
| 组件 | 位置 | 职责 |
|---|---|---|
| rundll32.exe | 用户态 | DLL 加载器,解析命令行参数,调用 InstallHinfSection |
| InstallHinfSection | setupapi.dll | rundll32 专用导出入口,转发至 SetupInstallFromInfSectionW |
| SetupInstallFromInfSectionW | setupapi.dll | 核心底层 API,执行指定 INF 安装段 |
| setupapi INF 解析引擎 | setupapi.dll | 解析 INF、段、指令、宏与 %1% 参数替换 |
| drvstore.dll | 用户态 | 驱动包入库、签名哈希校验 |
| advapi32.dll | 用户态 | 注册表 / SCM 服务操作 |
| pnp.sys | 内核 | 硬件枚举、设备栈、驱动加载(独立流程) |
InfDefaultInstall 完整解构
名称:
InfDefaultInstall归属模块:setupapi.dll(Win32 SetupAPI,用户态) 函数原型:BOOL InfDefaultInstall(LPCTSTR lpInfPath, HINF hInfReserved);定位:INF 标准入口安装函数,执行 INF[DefaultInstall]节定义的全套默认安装动作;INF 右键「安装」、部分旧版驱动安装程序底层就是调用此 API。 分析框架:底层原理|依赖文件|依赖关系|配套链|逻辑链路|边界
一、底层原理
InfDefaultInstall 是 SetupAPI 对外暴露的高层封装函数,核心作用:读取 INF 文件,解析 [DefaultInstall] 以及其指向的子段,批量执行 INF 指令集。 [DefaultInstall] 是 INF 的主入口段,内部通过 CopyFiles、AddReg、DelReg、AddService、RegisterDlls 等指令定义批量操作。
核心执行行为清单
- 解析 INF,读取
[DefaultInstall]段,获取所有动作引用(文件复制、注册表、服务注册等) CopyFiles:复制文件到目标路径(驱动场景会调用 drvstore.dll 入库到 DriverStore)AddReg/DelReg:增删注册表项(调用 advapi32.dll 注册表 API)AddService:注册内核驱动 / Win32 服务,写入 SCM 服务数据库RegisterDlls:COM 组件注册,调用 DllRegisterServer- 处理 INF 字符串替换(
%str%)、目标目录宏(%11%%12%%SystemRoot%)
重要区分:
InfDefaultInstall是通用 INF 安装入口,并非仅用于硬件驱动;软件、COM 组件、系统配置类 INF 也可使用。- 硬件驱动 INF:
[DefaultInstall]会触发驱动包入库;但 PnP 设备枚举、创建设备 DevNode 不由 InfDefaultInstall 执行,是 pnp.sys/cfgmgr32 负责。- 现代推荐:驱动安装优先使用
SetupCopyOemInf(pnputil /add-driver 底层),InfDefaultInstall属于旧版 API,保留兼容。
简化调用栈
调用者(右键INF安装 / 旧安装程序)
↓ setupapi.dll :: InfDefaultInstall
↓ setupapi内部INF解析引擎
├─ CopyFiles → drvstore.dll(驱动场景入库DriverStore) / kernel32文件复制
├─ AddReg/DelReg → advapi32.dll Reg*注册表API
├─ AddService → advapi32.dll OpenSCManager / CreateService
└─ RegisterDlls → LoadLibrary + 调用DllRegisterServer
二、依赖文件
| 文件 | 路径 | 角色说明 |
|---|---|---|
setupapi.dll |
System32 | 宿主,InfDefaultInstall 函数、INF 解析引擎实现 |
drvstore.dll |
System32 | 驱动 INF 场景:CopyFiles 动作触发驱动包入库到 DriverStore |
advapi32.dll |
System32 | AddReg/DelReg/AddService,注册表与 SCM 服务操作 |
kernel32.dll / ntdll.dll |
System32 | 文件复制、目录创建、宏解析、句柄管理 |
crypt32.dll |
System32 | 驱动 INF 场景,驱动包签名校验(drvstore 调用) |
cfgmgr32.dll |
System32 | 间接依赖;驱动安装后,可枚举设备实例更新引用计数 |
pnp.sys |
内核 | 无直接调用;仅当后续硬件枚举时,pnp.sys 才加载仓库内驱动 |
运行时业务依赖
- INF 文件语法规范:必须存在
[DefaultInstall]节,否则 InfDefaultInstall 直接返回失败。 - 权限:绝大多数场景必须管理员权限:写入 HKLM 注册表、AddService、写入 DriverStore、复制文件到系统目录。普通用户仅能执行部分只读 INF 动作。
- 系统目录重定向(WOW64):32 位程序调用 InfDefaultInstall 在 64 位 Windows 会触发文件系统重定向,容易出现文件复制到 SysWOW64 而非 System32 的坑。
三、依赖关系
链路 1:右键 INF「安装」,调用 InfDefaultInstall(驱动 INF)
Shell右键菜单(setupapi关联inf安装动词)
↓ setupapi.dll :: InfDefaultInstall(inf路径, NULL)
↓ INF解析引擎读取 [DefaultInstall]
↓ CopyFiles → drvstore.dll,驱动包复制入库FileRepository,哈希+签名校验
↓ AddReg → advapi32写入HKLM驱动相关注册表
↓ AddService → advapi32调用SCM注册内核驱动服务
↓ drvstore初始化驱动包引用计数=0
链路 2:普通配置 INF(非硬件驱动,仅修改注册表)
应用程序调用 InfDefaultInstall
↓ setupapi INF解析引擎
↓ [DefaultInstall] -> AddReg
↓ advapi32::RegSetValueEx 写入注册表
链路 3:INF RegisterDlls 注册 COM 组件
InfDefaultInstall
↓ setupapi解析RegisterDlls指令
↓ LoadLibraryA/W 加载目标dll
↓ 调用DllRegisterServer导出函数(COM自注册)
- 调用方向:上层程序 / Shell → setupapi::InfDefaultInstall → 分分支调用 drvstore /advapi32 /kernel32
- 单向调用:InfDefaultInstall 不会被 drvstore、advapi32 反向调用。
- 和 PnP 内核 pnp.sys:InfDefaultInstall 本身不会触发设备枚举、不会创建设备 DevNode。仅把驱动包放进仓库,等待 pnp.sys 后续硬件检测匹配。
四、配套链
系统组件分工
| 组件 | 运行层 | 作用 |
|---|---|---|
| InfDefaultInstall(setupapi.dll 内) | 用户态 | INF 高层安装入口,解析并执行 [DefaultInstall] 全套动作 |
| setupapi INF 解析引擎 | 用户态 | 解析 INF 语法、段、指令、字符串宏替换 |
| drvstore.dll | 用户态 | 驱动 INF 场景,驱动包入库 DriverStore |
| advapi32.dll | 用户态 | 注册表操作、SCM 服务注册 |
| cfgmgr32.dll | 用户态 | 设备枚举、驱动包引用计数更新(后续阶段) |
| pnp.sys | 内核 | 硬件枚举、设备栈构建、驱动加载(独立流程,不由 InfDefaultInstall 触发) |
安全视角
- 经典攻击面:恶意 INF,通过 InfDefaultInstall 执行 AddReg、CopyFiles、AddService,管理员权限下可写入恶意驱动 / COM 组件。旧 Windows 版本存在 INF 解析漏洞。
- 驱动 INF 场景:入库时 crypt32 校验驱动签名;安全启动开启时,未签名驱动会被 drvstore 拒绝入库。
- 权限控制:UAC 会拦截非提升进程调用 InfDefaultInstall 执行系统目录 / 注册表修改动作。
五、逻辑链路
完整流程:调用 InfDefaultInstall
- 传入 INF 文件路径,调用
InfDefaultInstall。 - setupapi 加载并解析 INF 文件,校验文件语法,定位
[DefaultInstall]段。不存在则返回 FALSE。 - 按 INF 内指令顺序执行:
- CopyFiles:复制文件;驱动类 INF 会路由至 drvstore 入库 DriverStore;普通 INF 直接复制到目标目录。
- AddReg/DelReg:调用 advapi32 修改注册表。
- AddService:调用 advapi32 注册驱动 / 服务。
- RegisterDlls:加载 DLL 执行 COM 注册。
- 全部指令执行完成,返回布尔结果;任意关键指令失败,整体安装回滚(部分场景无完整事务回滚,存在半安装残留)。
⚠️ 重点:InfDefaultInstall 执行完驱动 INF,驱动包只是入库,不会自动加载驱动,不会自动创建设备节点。必须等待 pnp.sys 扫描硬件,匹配此 INF,才会创建设备 DevNode,引用计数 + 1,加载.sys。
六、边界(约束、坑点、失效条件)
1. 语法边界
- 必须存在
[DefaultInstall]段;大小写不敏感。没有该节,InfDefaultInstall 直接返回失败。 - INF 指令不是全部都支持在 DefaultInstall;部分 PnP 专用指令(如
HWID匹配)不在此流程执行,属于 PnP 管理器流程。 - INF 宏替换:
%11%%SystemRoot%等目录宏由 setupapi 在解析阶段展开。
2. 权限边界
- 修改 HKLM 注册表、AddService、CopyFiles 到系统目录、驱动入库:必须管理员提升权限。
- 仅修改当前用户 HKCU 注册表的简单 INF,普通用户有可能执行成功。
3. 驱动场景边界(高频误区)
✅ InfDefaultInstall:把驱动包放入 DriverStore 仓库 ❌ InfDefaultInstall:不会触发硬件扫描、不会创建设备 DevNode、不会加载内核驱动。
很多人混淆:右键 INF 安装 ≠ 硬件设备安装;只是驱动包入库。
4. API 生命周期与兼容性边界
InfDefaultInstall是遗留兼容 API,微软文档标记:现代驱动开发不推荐,推荐使用SetupCopyOemInf。- 64 位 Windows 存在 WOW64 重定向陷阱:32 位进程调用 InfDefaultInstall,文件复制目标路径会被 WOW64 重定向到 SysWOW64。
- 无完整事务回滚:如果中间某条指令失败,前面已经执行成功的注册表 / 文件操作不会自动撤销,会留下系统残留。
5. 职责边界
✅ InfDefaultInstall:执行 INF [DefaultInstall] 定义的批量文件、注册表、服务、COM 注册动作 ❌ InfDefaultInstall:不做硬件枚举、不处理 PNP IRP、不创建设备 DevNode、不管理内核设备树
6. 高频认知误区
- ❌ 调用 InfDefaultInstall 就会加载驱动到内核;✅ 仅入库,驱动不会加载,等待 pnp.sys 设备匹配。
- ❌ 所有 INF 都必须使用 InfDefaultInstall 安装;✅ PnP 硬件匹配流程自动匹配 INF,不需要手动调用 InfDefaultInstall。
- ❌ InfDefaultInstall 是内核函数;✅ 用户态 setupapi 导出函数,完全运行在用户模式。
InfDefaultInstall 组件分工简表
| 组件 | 位置 | 职责 |
|---|---|---|
| InfDefaultInstall | setupapi.dll | INF 高层安装入口,执行 [DefaultInstall] 段所有指令 |
| setupapi INF 解析引擎 | setupapi.dll | 解析 INF 文本、段、指令、宏替换 |
| drvstore.dll | 用户态 | 驱动 INF 场景,驱动包入库 DriverStore |
| advapi32.dll | 用户态 | 注册表读写、SCM 服务注册 |
| pnp.sys | 内核 | 硬件枚举,设备栈创建,驱动文件加载(独立流程) |
"InfDefaultInstall" 是 Windows 操作系统中的一个安装函数,用于执行与 .inf 文件关联的默认安装操作。当使用 InfDefaultInstall 函数时,系统将针对指定的 .inf 文件执行默认的安装行为,包括复制文件、注册组件、创建注册表项等。
使用 InfDefaultInstall 函数的一种常见情况是通过命令行执行 .inf 文件的安装。以下是使用 InfDefaultInstall 的基本步骤:
打开命令提示符或 PowerShell 终端。
使用 cd 命令导航到包含 .inf 文件的目录。
运行以下命令:
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 path\to\driver.inf
其中,path\to\driver.inf 是您要安装的 .inf 文件的路径。
等待安装过程完成,系统将执行 .inf 文件中定义的默认安装动作。
请注意,使用 InfDefaultInstall 函数执行 .inf 文件安装可能需要管理员权限。
InfDefaultInstall 函数的参数是通过在 .inf 文件中定义的安装部分(Install Section)来确定的。下面是一些常见的 InfDefaultInstall 参数实例:
使用默认安装部分:
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [DefaultInstall] 的默认安装部分。
指定自定义安装部分:
rundll32.exe setupapi,InstallHinfSection CustomInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [CustomInstall] 的自定义安装部分。
静默安装:
rundll32.exe setupapi,InstallHinfSection QuietInstall 128 path\to\driver.inf
这将以静默模式执行 .inf 文件中名为 [QuietInstall] 的安装部分,不显示安装界面或提示。
强制重新安装:
rundll32.exe setupapi,InstallHinfSection ForceInstall 128 path\to\driver.inf
这将强制重新安装 .inf 文件中名为 [ForceInstall] 的安装部分,无论驱动程序是否已存在。
自定义安装程序名称:
rundll32.exe setupapi,InstallHinfSection MyInstallAction 128 path\to\driver.inf,MyProgram
这将执行 .inf 文件中名为 [MyInstallAction] 的自定义安装部分,并将安装程序名称设置为 MyProgram。这在需要更好的可读性和清晰度时可能很有用。
安装之前重命名文件:
rundll32.exe setupapi,InstallHinfSection RenameFilesInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [RenameFilesInstall] 的安装部分,在复制文件之前重命名指定的文件。
设置注册表项:
rundll32.exe setupapi,InstallHinfSection RegistryInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [RegistryInstall] 的安装部分,并设置相关的注册表项。
处理设备驱动程序卸载:
rundll32.exe setupapi,InstallHinfSection UninstallInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [UninstallInstall] 的安装部分,并卸载相关的设备驱动程序。
安装指定版本的驱动程序:
rundll32.exe setupapi,InstallHinfSection MyDriverInstall 128 path\to\driver.inf,MyDriverVersion
这将执行 .inf 文件中名为 [MyDriverInstall] 的安装部分,并安装特定版本的驱动程序。
禁用数字签名验证:
rundll32.exe setupapi,InstallHinfSection NoSignInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [NoSignInstall] 的安装部分,并禁用数字签名验证。使用此选项时,请确保您从可靠的来源获取 .inf 文件。
强制覆盖现有的驱动程序:
rundll32.exe setupapi,InstallHinfSection OverwriteInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [OverwriteInstall] 的安装部分,并强制覆盖现有的驱动程序。
集成安装:
rundll32.exe setupapi,InstallHinfSection IntegratedInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [IntegratedInstall] 的安装部分,并以 “集成” 模式安装驱动程序,它会将文件复制到系统目录并更新系统注册表。
安装指定平台的驱动程序:
rundll32.exe setupapi,InstallHinfSection MyDriverInstall 128 path\to\driver.inf,<platform>
这将执行 .inf 文件中名为 [MyDriverInstall] 的安装部分,并安装适用于指定平台的驱动程序。<platform> 可以是 NTx86(32位系统)或 NTamd64(64位系统),具体取决于目标计算机的体系结构。
安装驱动程序并强制重新启动:
rundll32.exe setupapi,InstallHinfSection RebootInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [RebootInstall] 的安装部分,并在安装完成后强制重新启动计算机。这在某些情况下可能是必要的,以使驱动程序的更改生效。
安装驱动程序并显示进度:
rundll32.exe setupapi,InstallHinfSection ProgressInstall 128 path\to\driver.inf
这将执行 .inf 文件中名为 [ProgressInstall] 的安装部分,并在安装过程中显示进度对话框。这对于需要长时间运行的安装过程可能很有用,以便用户可以跟踪进度。

浙公网安备 33010602011771号