Reg2inf

驱动程序包 INF 注册表转换工具 (reg2inf.exe) 将注册表项及其值或其值或 COM .dll 实现 DllRegisterServer 例程转换为一组 INF AddReg 指令INF DDInstall.COM 部分,以便将 in-proc COM 服务器包含在驱动程序包 INF 文件中。 此工具特别适用于将现有 INF RegisterDlls 指令转换为 INF AddReg 指令或 INF DDInstall.COM 部分,以便使 INF 文件通用。 有关通用 INF 文件的详细信息,请参阅使用通用 INF 文件

从 Windows 10 版本 1709 开始,该工具作为 WDK 10 安装的一部分提供。 可以在 WDK 10 安装的 \tools 子目录中找到该工具,例如 C:\Program Files(x86)\Windows Kits\10\tools\

当 Reg2inf 尝试生成 COM 注册时,它可能不会捕获 COM 注册提供的完整注册表状态。 与往常一样,你应该检查工具的输出,以保持完整性和正确性,并测试结果。

从命令行运行 Reg2inf

本部分列出了 Reg2inf 的命令行选项。

reg2inf.exe [/downlevel]  [/key <path> | /dll <filename>] [/targetkey <path>]
  • /downlevel

    忽略 DDInstall.COM 语法样式,并且仅通过 AddReg 指令打印输出。 此选项仅适用于面向低于 Windows 11 版本 24H2 的 OS 版本的 INF 部分。

  • /key <registry key path>

    处理特定注册表项,例如:reg2inf /key HKEY_LOCAL_MACHINE\SOFTWARE\Fabrikam

  • /dll <module filename>

    处理实施 DllRegisterServer 入口点的 COM DLL 模块,通常由 regsvr32.exe 或旧 INF RegisterDlls 指令调用,以便在 HKEY_CLASSES_ROOT 下注册 COM 类,例如:reg2inf /dll %SystemRoot%\System32\fabkobj.dll

  • /targetkey <registry key path>

    将目标注册表项重新映射到其他基本项路径下,例如:reg2inf /key HKLM\SYSTEM\Temp /targetkey HKR\Parameters

注意

Reg2inf 要求完整路径长度不得超过 259 个字符。

在 INF 文件中注册 COM 组件

以下代码片段演示了如何使用 INF DDInstall.COM 语法注册简单的 COM 类,如同 Reg2inf 不使用/downlevel 参数生成:

[SimpleCom.COM]
AddComServer = COM_Server,,SimpleCom_Install

[SimpleCom_Install]
ServerType = 1
ServerBinary = %13%\comobj.dll
AddComClass = Sample Class,{92FCF37F-F6C7-4F8A-AA09-1A14BA118084},,SimpleCom_Class_Install

[SimpleCom_Class_Install]
ThreadingModel = Both

以下代码片段演示了如何使用 INF AddReg 语法注册简单的 COM 类,如同 Reg2inf 使用/downlevel 参数生成:

[ComClass_AddReg]
HKCR,CLSID\{92FCF37F-F6C7-4F8A-AA09-1A14BA118084},,,"Sample Class"
HKCR,CLSID\{92FCF37F-F6C7-4F8A-AA09-1A14BA118084}\InprocServer32,,%REG_EXPAND_SZ%,"%13%\comobj.dll"
HKCR,CLSID\{92FCF37F-F6C7-4F8A-AA09-1A14BA118084}\InprocServer32,ThreadingModel,,"Both"