rundll32 调用的是 setupapi.dll 导出入口:InstallHinfSection,DefaultInstall 只是 INF 里面的段名。很多文档容易混淆两者。 命令原型:rundll32.exe setupapi,InstallHinfSection <SectionName> <ModeFlag> <InfPath>[,Param]

 

rundll32.exe setupapi,InstallHinfSection 完整解构

核心澄清:不存在独立导出函数 InfDefaultInstall;你文档里提到的 InfDefaultInstall 是语义名称,rundll32 调用的是 setupapi.dll 导出入口:InstallHinfSectionDefaultInstall 只是 INF 里面的段名。很多文档容易混淆两者。 命令原型:rundll32.exe setupapi,InstallHinfSection <SectionName> <ModeFlag> <InfPath>[,Param] 分析框架:底层原理|依赖文件|依赖关系|配套链|逻辑链路|边界

一、底层原理

InstallHinfSectionsetupapi.dll 专门为 rundll32 暴露的导出入口函数,用于从命令行执行 INF 任意[InstallSection]安装段。 rundll32 是通用 DLL 加载器:把命令行字符串解析,调用 DLL 导出函数,把参数打包传给InstallHinfSection

核心概念拆解

  1. SectionName:INF 内的段名,例如 DefaultInstall / CustomInstall / UninstallInstall,函数会读取这个段下所有指令(CopyFiles/AddReg/DelReg/AddService等)。
  2. ModeFlag(数字 128):关键标记 128 = 0x80,含义:使用本地系统管理员上下文、不弹出交互对话框(静默基础模式);其他常用标记:0 = 交互式,1 = 备份,2 = 卸载。

    常见误区:128 不是静默,只是抑制部分 UI;INF 内部指令仍可能弹窗。

  3. InfPath[,Param]:INF 文件路径,逗号后是可选自定义参数,在 INF 内部可用%1%引用。

执行模型: rundll32 仅做参数转发 + DLL 加载;真正 INF 解析、文件复制、注册表写入全部由 setupapi 内部引擎执行。 InstallHinfSection 内部会调用 setupapi 底层 INF 执行引擎,等价于程序调用 SetupInstallFromInfSection API。 👉 关系: rundll32 setupapi,InstallHinfSectionSetupInstallFromInfSection(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 不会触发设备枚举

运行时业务依赖

  1. INF 文件:必须存在你指定的[SectionName]段,段名大小写不敏感,缺失直接返回失败。
  2. 权限:128 (0x80) 标记要求进程以管理员身份运行;非提升 rundll32 执行,HKLM 写入、驱动入库、AddService 全部拒绝。
  3. WOW64 重定向:32 位 rundll32(SysWOW64\rundll32.exe)会触发文件系统重定向,复制文件会定向到 SysWOW64,64 位驱动安装极易踩坑。
  4. 文件锁:目标文件正在被占用时,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%做分支判断
  1. 调用方向:命令行 → rundll32.exe → setupapi::InstallHinfSection → SetupInstallFromInfSection → drvstore /advapi32 /kernel32
  2. 单向调用:InstallHinfSection 不会反向调用 rundll32;执行结束后 setupapi 返回结果,rundll32 进程退出。
  3. 和 PnP 内核 pnp.sys:InstallHinfSection 不会触发硬件扫描、不会创建设备 DevNode、不会加载内核驱动。仅把驱动包放入 DriverStore 仓库,等待 pnp.sys 后续硬件枚举匹配。

⚠️ 重要误区纠正: NoSignInstallForceInstall这类不是 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 内核 硬件枚举、设备栈创建、驱动加载(独立流程)

安全视角

  1. 攻击面:管理员权限下执行恶意 INF,可通过 AddReg、AddService 注册恶意内核驱动 / COM 组件,是经典本地提权 / 持久化手法。
  2. 命令行无内置校验:INF 内容完全可控,段名仅为文本标记,段内指令由 INF 定义。
  3. 数字签名校验:段名无法绕过驱动签名NoSignInstall只是自定义段名,不能关闭系统驱动签名策略。

五、逻辑链路

完整执行时序

  1. 用户在 CMD/PowerShell 执行 rundll32 命令。
  2. rundll32 解析命令行,拆分:导出函数名、SectionName、ModeFlag、INF 路径与可选参数。
  3. rundll32 加载 setupapi.dll,定位InstallHinfSection导出函数,传入参数。
  4. InstallHinfSection做参数校验,调用底层SetupInstallFromInfSectionW
  5. SetupAPI 引擎加载 INF 文件,查找指定[SectionName]段,校验语法。
  6. 按 INF 段内指令顺序逐条执行:
    • CopyFiles:驱动类 INF 路由 drvstore 入库;普通文件直接复制。
    • AddReg / DelReg:调用 advapi32 修改注册表。
    • AddService / DelService:调用 SCM 注册 / 删除服务。
    • RegisterDlls:加载 DLL 执行 COM 组件注册。
  7. 全部指令执行完毕,返回执行状态码给 InstallHinfSection。
  8. InstallHinfSection 返回给 rundll32,rundll32 进程退出。

关键点: 执行完成,驱动仅入库,不会自动加载、不会自动创建设备节点; 如需生效,要么重启,要么pnputil /scan触发 pnp.sys 硬件扫描匹配驱动。

六、边界(约束、坑点、失效条件)

1. 命令参数边界

  1. ModeFlag=128(0x80):静默模式标记,但不是完全无 UI;部分 INF 指令仍可弹出对话框。0 = 交互式,会弹出安装向导。
  2. 自定义段名仅为文本标记:QuietInstall/ForceInstall只是 INF 段名字,没有内置特殊逻辑,行为完全由 INF 内部指令决定。
  3. 逗号参数 inf,MyParam:仅用于 INF 内部%1%变量,不能传递给底层 SetupAPI 作为开关

2. 权限边界

  1. ModeFlag=128 场景,rundll32 进程必须右键以管理员身份启动;普通用户执行,写入 HKLM、DriverStore、创建服务全部拒绝。
  2. 仅修改 HKCU 注册表的简单 INF,普通用户有可能执行成功。

3. 驱动签名边界(高频坑)

❌ 修改段名 NoSignInstall 不能关闭驱动签名校验。 ✅ 关闭驱动签名需要系统层面:测试签名开启 bcdedit /set testsigning on 或临时高级启动禁用强制签名。INF 段本身无能力绕过。

4. 事务与回滚边界

  1. 没有原子事务:指令是顺序执行;中间某一步失败,前面已经执行的注册表、文件改动不会自动回滚,会产生系统残留
  2. CopyFiles 支持重启替换:INF 可配置文件在下次启动替换正在占用的系统文件。

5. 职责边界

InstallHinfSection:执行指定 INF 安装段的指令集(文件复制、注册表、服务注册) ❌ InstallHinfSection不扫描硬件、不创建 DevNode、不加载内核驱动、不处理 PNP IRP

6. 高频认知误区汇总

  1. ❌ InfDefaultInstall 是独立 DLL 导出函数;✅ InfDefaultInstall 是俗称,本质调用 InstallHinfSection 执行 [DefaultInstall] 段。
  2. NoSignInstall段可以跳过驱动签名;✅ 段名只是名字,签名校验由 drvstore+crypt32 + 系统安全策略控制。
  3. ❌ 执行完 rundll32 命令,驱动自动加载生效;✅ 仅入库,需要 pnp.sys 设备匹配后才加载。
  4. ❌ rundll32 是执行 INF 的内核组件;✅ rundll32、setupapi 全部是用户态程序。
  5. 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 的主入口段,内部通过 CopyFilesAddRegDelRegAddServiceRegisterDlls 等指令定义批量操作。

核心执行行为清单

  1. 解析 INF,读取[DefaultInstall]段,获取所有动作引用(文件复制、注册表、服务注册等)
  2. CopyFiles:复制文件到目标路径(驱动场景会调用 drvstore.dll 入库到 DriverStore)
  3. AddReg / DelReg:增删注册表项(调用 advapi32.dll 注册表 API)
  4. AddService:注册内核驱动 / Win32 服务,写入 SCM 服务数据库
  5. RegisterDlls:COM 组件注册,调用 DllRegisterServer
  6. 处理 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 才加载仓库内驱动

运行时业务依赖

  1. INF 文件语法规范:必须存在[DefaultInstall]节,否则 InfDefaultInstall 直接返回失败。
  2. 权限:绝大多数场景必须管理员权限:写入 HKLM 注册表、AddService、写入 DriverStore、复制文件到系统目录。普通用户仅能执行部分只读 INF 动作。
  3. 系统目录重定向(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自注册)
  1. 调用方向:上层程序 / Shell → setupapi::InfDefaultInstall → 分分支调用 drvstore /advapi32 /kernel32
  2. 单向调用:InfDefaultInstall 不会被 drvstore、advapi32 反向调用。
  3. 和 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 触发)

安全视角

  1. 经典攻击面:恶意 INF,通过 InfDefaultInstall 执行 AddReg、CopyFiles、AddService,管理员权限下可写入恶意驱动 / COM 组件。旧 Windows 版本存在 INF 解析漏洞。
  2. 驱动 INF 场景:入库时 crypt32 校验驱动签名;安全启动开启时,未签名驱动会被 drvstore 拒绝入库。
  3. 权限控制:UAC 会拦截非提升进程调用 InfDefaultInstall 执行系统目录 / 注册表修改动作。

五、逻辑链路

完整流程:调用 InfDefaultInstall

  1. 传入 INF 文件路径,调用InfDefaultInstall
  2. setupapi 加载并解析 INF 文件,校验文件语法,定位[DefaultInstall]段。不存在则返回 FALSE。
  3. 按 INF 内指令顺序执行:
    • CopyFiles:复制文件;驱动类 INF 会路由至 drvstore 入库 DriverStore;普通 INF 直接复制到目标目录。
    • AddReg/DelReg:调用 advapi32 修改注册表。
    • AddService:调用 advapi32 注册驱动 / 服务。
    • RegisterDlls:加载 DLL 执行 COM 注册。
  4. 全部指令执行完成,返回布尔结果;任意关键指令失败,整体安装回滚(部分场景无完整事务回滚,存在半安装残留)。

⚠️ 重点:InfDefaultInstall 执行完驱动 INF,驱动包只是入库,不会自动加载驱动,不会自动创建设备节点。必须等待 pnp.sys 扫描硬件,匹配此 INF,才会创建设备 DevNode,引用计数 + 1,加载.sys。

六、边界(约束、坑点、失效条件)

1. 语法边界

  1. 必须存在[DefaultInstall]段;大小写不敏感。没有该节,InfDefaultInstall 直接返回失败。
  2. INF 指令不是全部都支持在 DefaultInstall;部分 PnP 专用指令(如HWID匹配)不在此流程执行,属于 PnP 管理器流程。
  3. INF 宏替换:%11% %SystemRoot%等目录宏由 setupapi 在解析阶段展开。

2. 权限边界

  1. 修改 HKLM 注册表、AddService、CopyFiles 到系统目录、驱动入库:必须管理员提升权限
  2. 仅修改当前用户 HKCU 注册表的简单 INF,普通用户有可能执行成功。

3. 驱动场景边界(高频误区)

✅ InfDefaultInstall:把驱动包放入 DriverStore 仓库 ❌ InfDefaultInstall:不会触发硬件扫描、不会创建设备 DevNode、不会加载内核驱动

很多人混淆:右键 INF 安装 ≠ 硬件设备安装;只是驱动包入库。

4. API 生命周期与兼容性边界

  1. InfDefaultInstall 是遗留兼容 API,微软文档标记:现代驱动开发不推荐,推荐使用SetupCopyOemInf
  2. 64 位 Windows 存在 WOW64 重定向陷阱:32 位进程调用 InfDefaultInstall,文件复制目标路径会被 WOW64 重定向到 SysWOW64。
  3. 无完整事务回滚:如果中间某条指令失败,前面已经执行成功的注册表 / 文件操作不会自动撤销,会留下系统残留。

5. 职责边界

✅ InfDefaultInstall:执行 INF [DefaultInstall] 定义的批量文件、注册表、服务、COM 注册动作 ❌ InfDefaultInstall:不做硬件枚举、不处理 PNP IRP、不创建设备 DevNode、不管理内核设备树

6. 高频认知误区

  1. ❌ 调用 InfDefaultInstall 就会加载驱动到内核;✅ 仅入库,驱动不会加载,等待 pnp.sys 设备匹配。
  2. ❌ 所有 INF 都必须使用 InfDefaultInstall 安装;✅ PnP 硬件匹配流程自动匹配 INF,不需要手动调用 InfDefaultInstall
  3. ❌ 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] 的安装部分,并在安装过程中显示进度对话框。这对于需要长时间运行的安装过程可能很有用,以便用户可以跟踪进度。

 

posted @ 2023-10-01 13:14  suv789  阅读(809)  评论(0)    收藏  举报