InstallHinfSectionA 函数 (setupapi.h)
[此函数可用于“要求”部分所示的操作系统。 在后续版本中可能会更改或不可用。 不应再使用 SetupAPI 来安装应用程序。 请改用 Windows Installer 来开发应用程序安装程序。 SetupAPI 继续用于安装设备驱动程序。]
InstallHinfSection 是由 Setupapi.dll 导出的入口点函数,可用于执行 .inf 文件的节。
注意
对于许多方案,建议使用 基元驱动程序包 而不是将 .inf 文件与 InstallHinfSection 配合使用
InstallHinfSection 可以通过调用 Rundll32.exe 实用工具来调用,如“备注”部分中所述。 InstallHinfSection 函数的原型遵循用于 Rundll32.exe的所有入口点函数的形式。
如果复制或修改了文件,则需要此函数的调用方具有写入目标目录的权限。 如果安装了任何服务,则需要此函数的调用方有权访问 Service Control Manager。
语法
void InstallHinfSectionA(
[in] HWND Window,
[in] HINSTANCE ModuleHandle,
[in] PCSTR CommandLine,
[in] INT ShowCommand
);
参数
[in] Window
父窗口句柄。 通常 hwnd 为 Null。
[in] ModuleHandle
保留且应为 Null。
[in] CommandLine
指向包含命令行的缓冲区的指针。 应使用以 null 结尾的字符串。
[in] ShowCommand
保留且应为零。
返回值
没有
言论
请注意,存在三个导出:InstallHinfSection(for RunDll32)、InstallHinfSectionA和 InstallHinfSectionW。
若要运行指定 .inf 文件的 Install 节,可以使用以下语法调用 InstallHinfSection 和 Rundll32.exe。
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection <section> <mode> <path>
这会将“<节><模式><路径>”传递给 CmdLineBuffer。
或者,程序可以直接调用 InstallHinfSection、InstallHinfSectionA或直接 InstallHinfSectionW,将 CmdLineBuffer 参数设置为以下内容。
"<section> <mode> <path>"
其中,路径 是 .inf 文件的完整路径,模式 是重新启动模式参数,节 是 .inf 文件中的任何 安装 节。 命令行上的 SETUPAPI.DLL 和 InstallHinfSection 之间的逗号分隔符是必需的。 请注意,在逗号和 SETUPAPI.DLL 或 InstallHinfSection之间,命令行上不能有任何空格。
建议将 .inf 文件的完整路径指定为 路径。
可以将 .inf 文件中的任何 安装 节指定为 节。 不允许有空格。
应对 模式使用以下值的组合。 必须包含 128 才能将安装的默认路径设置为 INF 的位置,否则假定系统提供的 INF。 添加值以指定重新启动。 请注意,仅建议使用值 128 或 132,其他值可能会导致计算机在需要时不必要地重新启动或不重新启动。
价值 | 描述 |
---|---|
0 | 系统提供的 INF。 |
128 | 将安装的默认路径设置为 INF 的位置。 这是典型的设置。 |
+0 | 从不重新启动计算机。 |
+1 | 在所有情况下重启计算机。 |
+2 | 始终询问用户是否要重新启动。 |
+3 | 如有必要,无需要求用户授予权限,请重启计算机。 |
+4 | 如果需要重启计算机,请在重新启动之前请求用户权限。 |
例如,以下命令行运行 Shell.inf 文件的 DefaultInstall 节。 如果安装程序确定需要重新启动,系统会提示用户“重新启动计算机,是/否”对话框。
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C:\Example\SHELL.INF
注意
setupapi.h 标头将 InstallHinfSection 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
谨慎
在 x86 或 amd64 以外的体系结构上使用时, 或在 S 模式的系统上使用时,InstallHInfSection 要求 INF 文件具有 INF 版本部分,该指令指向包含 INF 文件的哈希的已签名目录文件,以及 INF 文件通过 INF SourceDisksFiles 节引用的任何文件。
谨慎
在本机体系结构不是 x86 和 amd64 的系统上使用时,应从本机体系结构进程使用 InstallHInfSection。 InstallHInfSection 会在非本机体系结构过程中使用时阻止许多类型的系统状态更改操作。
InstallHinfSection 会将诊断信息记录到 SetupAPI 应用程序安装文本日志。 默认情况下,此日志文件通常处于关闭状态。 可以通过修改 SetupAPI LogLevel
值的 常规日志记录级别 部分来启用它,如 设置 SetupAPI 日志记录级别中所述。 出于性能原因,仅当排查问题时,才应启用此日志文件。 启用日志文件后,可以在 %windir%\inf\setupapi.app.log
找到它。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | setupapi.h |
库 | Setupapi.lib |
DLL | Setupapi.dll |