only now I see this post, I never found the time to give them all the info, but reg2inf tool supports a lot more, Example reg2inf knows all the directories in all languages

and converts them into DirID
; $sFilter - Optional the filter to use, default is "(?i)\.reg$" $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp
; $iFlags - Optional, Default is $iFlags = 0 (add the flags together for multiple operations):
; $iFlags = 1 - Delete file after
; $iFlags = 2 - Replace, if destination file exists
; $iFlags = 4 - Rename, if destination file exists
; Defaut if destination file exists, rename output Path file, example C:\file.inf in C:\file (n).inf
;
; $iFlags = 8192 - Set\Use Normal Hex String, 0x00000000 (REG_SZ) & 0x00020000 (REG_EXPAND_SZ) & 0x00000001 (REG_BINARY) ect ect ect
; Default is Short Hex String, 0x0 (REG_SZ) or 0x20000 (REG_EXPAND_SZ) or 0x1 (REG_BINARY) ect ect ect
; $iFlags = 16384 - Set\Use Variable Mod, %REG_SZ% (REG_SZ=0x00000000) or %REG_DWORD% (REG_DWORD=0x00010001) ect ect
; $iFlags = 8 - Add REG_NOCLOBBER Flags (0x00000002), Prevent a given value from replacing the value of an existing value entry.
; If Set\Used REG_DELVAL Flags, REG_NOCLOBBER Flags will be ignored
; $iFlags = 16 - Add REG_OVERWRITEONLY Flags (0x00000020), Reset to the supplied value only if the specified value-entry-name already
; exists in the given subkey. If Set\Used REG_DELVAL or REG_NOCLOBBER Flags, REG_OVERWRITEONLY Flags will be ignored
; $iFlags = 32 - Add REG_32BITKEY Flags (0x00004000), (Windows XP and later versions of Windows.) Make the specified change
; in the 32-bit registry. If not specified, the change is made to the native registry.
; $iFlags = 64 - Add REG_64BITKEY Flags (0x00001000), (Windows XP and later versions of Windows.) Make the specified change
; in the 64-bit registry. If not specified, the change is made to the native registry.
; $iFlags = 128 - Add REG_DELVAL Flags (0x00000004), Delete the given subkey from the registry, or delete the specified value-entry-name
; from the specified registry subkey.
; $iFlags = 256 - Add REG_APPEND Flags (0x00000008), If Set\Used REG_DELVAL Flags, REG_APPEND Flags will be ignored
; Append a given value to that of an existing named value entry. This flag is valid only if FLG_ADDREG_TYPE_MULTI_SZ is also set.
; The specified string value is not appended if it already exists.
; $iFlags = 512 - Convert DirID Folder Path in DirID Variable, example "C:\Program Files" in %16422%
; If is not set $iFlags = 1024 and $idLang = "" Defaut Lang used is @MUILang
; $iFlags = 1024 - Convert DirID Folder Path in DirID Variable, example "C:\Program Files" in %16422%, Cheeck All Language
; $iFlags = 2048 - Convert\Write in Inf file REG_DWORD in binary mod (example Hex Mod = 0x410 Binary Mod = 10,04,00,00)
; $iFlags = 4096 - Add BackUp Reg Section in Inf File
; $ohKey - HKEY Name
; $oSubKey - SubKey Name
; $idLang - Set LangID, If is Set\Used $iFlags = 1024 $idLang will be ignored
; $sUserName - Optional, UserName, default is @UserName, $sUserName will be ignored if the $idLang or $iFlags = 512 or $iFlags = 1024 is not used\set
/F=$sFilter
/L=$idLang
/A=$iFlags
/UserName=$sUserName
/hKey=$ohKey
/SubKey=$oSubKey
/O=output
Example /A = Delete file after + Replace, if destination file exists
Ciao a tutti.