Reg2inf
Средство преобразования реестра пакета драйверов (reg2inf.exe
) преобразует раздел реестра и его значения или COM-.dll реализацию подпрограммы DllRegisterServer в набор директив INF AddReg или INF DDInstall.COM для серверов COM в proc для включения в INF-файл INF-файла пакета драйвера. Это средство особенно полезно для преобразования существующих директив INF RegisterDlls в директивы INF AddReg или INF-DDInstall.COM разделов, чтобы сделать INF-файл универсальным. Дополнительные сведения об универсальных INF-файлах см. в разделе "Использование универсального INF-файла".
Начиная с Windows 10 версии 1709, средство поставляется в составе установки WDK 10. Его можно найти в подкаталоге \tools
установки WDK 10, например 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. Этот параметр следует использовать только для разделов INF, предназначенных для версий ОС старше Windows 11 версии 24H2.
/key <registry key path>
Обработка определенного раздела реестра, например reg2inf /key HKEY_LOCAL_MACHINE\SOFTWARE\Fabrikam
/dll <module filename>
Обработка модуля DLL COM, реализующего точку входа DllRegisterServer, обычно вызываемую regsvr32.exe или устаревшей директивой INF RegisterDlls, чтобы зарегистрировать класс COM в HKEY_CLASSES_ROOT, например reg2inf /dll %SystemRoot%\System32\fabkobj.dll
/targetkey <registry key path>
Переназначение целевого раздела реестра в другом базовом пути, например reg2inf /key HKLM\SYSTEM\Temp /targetkey HKR\Parameters
Примечание.
Reg2inf требует, чтобы длина полного пути не должна превышать 259 символов.
Регистрация COM-компонента в INF-файле
В следующем фрагменте кода показано, как зарегистрировать простой COM-класс с помощью синтаксиса INF DDInstall.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
В следующем фрагменте кода показано, как зарегистрировать простой COM-класс с помощью синтаксиса INF AddReg, созданного 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"