PDA

Показать полную графическую версию : export-reg2inf (как узнать тип данных в реестре)


semiono
31-12-2009, 00:09
$REG_SZ = '0x0'
$REG_BINARY = '0x1'
$REG_DWORD = '0x10001'
$REG_EXPAND_SZ = '0x20000'

$rKey = 'HKLM'
$sKey = 'Software\Microsoft\Windows\CurrentVersion'

$vName1 = 'ProgramFilesDir'
$vData1 = RegRead($rKey & '\' & $sKey, $vName1)

$vName2 = 'CommonFilesDir'
$vData2 = RegRead($rKey & '\' & $sKey, $vName2)

;IniWrite("myfile.inf", "Version", "Signature", '"$Windows NT$"')

$file = FileOpen("myfile.inf", 2)
FileWrite($file, '[Version]' & @CRLF)
FileWrite($file, 'Signature="$Windows NT$"' & @CRLF)
FileWrite($file, @CRLF)
FileWrite($file, '[Add.Reg]' & @CRLF)
FileWrite($file, $rKey & ',"' & $sKey & '","' & $vName1 & '",' & $REG_SZ & ',"' & $vData1 & '"' & @CRLF)
FileWrite($file, $rKey & ',"' & $sKey & '","' & $vName2 & '",' & $REG_SZ & ',"' & $vData2 & '"' & @CRLF)
FileClose($file)

Вот нечто такое изобретаю... Проблемма в том, что здесь заранее известно тип данных,
но было бы интереснее их получать прямо из реестра!
Вдобавок запись на мой взгляд громоздкая получается, хотя наверное тут нельзя ничего оптимизировать?
Плохо что IniWrite() тут не подходит, было бы намного удобнее,
но этот макрос всегда пишет "=", что в данном случае вообще не уместно при записи реестра в INF формате.
Жаль что в природе нету INFWrite() :)

ЗЫ есть такая утилита reg2inf, но во-первых она работает на dotnetfx, что не очень хорошо для случайного компьютера,
а во-вторых, конвертер это не совсем то что надо, а надо ещё и граббер!

Creat0R
31-12-2009, 00:34
Тип данных возвращается в @extended (после RegRead), см. справку по этой функций.
По остольному могу только сказать что это всё возможно ;).




© OSzone.net 2001-2012