Показать полную графическую версию : [решено] _reg2inf.bat
Надо сохранить ключ реестра с тремя values в файл адекватный INF формату.
http://j.imagehost.org/0295/Snap1_1.png
Вот эти данные.
http://h.imagehost.org/0957/Snap2.png
А это целевой файл в который не получилось их сохранить программно :)
Собсно задача только получить значения, остальное написать наверное даже я смогу.
Задачу надо решить средствами reg.exe, cmd.exe итп. то-есть встроенными средствами,
утилиту reg2inf я не хочу использовать, так как она зависима от dotnetfx.
Данные inf будут выглядеть так, если вдруг непонятно, напр. "32,e4,e2,c8,85,73,c0,01"
P.S. 0x4000 - это флаг у меня для x64-Wow6432Node совместимости если кому интересно...
Однако сами данные REG_NONE тоже необычного типа, но я думаю это тот же REG_BINARY физически :)
задача только получить значения, остальное написать наверное даже я смогу »
@Echo Off
Set HIV=HKLM
Set KEY=Software\Classes\Trilogy
For /F "Tokens=1,3 Delims= " %%i In ('REG QUERY "%HIV%\%KEY%"^|Find "REG_NONE"') Do (
Set VAL=%%i& Set BIN=%%j& Set INF=& Call :BIN2INF)
Exit
:BIN2INF
Set INF=%INF%,%BIN:~,2%
Set BIN=%BIN:~2%
If Not "%BIN%"=="" GoTo BIN2INF
Echo %HIV%,"%KEY%","%VAL%",0x20001%INF%
GoTo :EOF
P.S. для экономии чужого времени используйте тег CODE вместо картинок
Find: REG_NONE: No such file or
Press any key to continue . . .
Паузу я добавил, что хоть ошибку увидеть.
А файл INF сам создастья? Или он должен быть. К сожалению, я не понял.
Вот экспорт реестра...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Trilogy]
"Value3"=hex(0):44,3a,5c,26,6e,5c,32,31,5c,54,72,69,6c,6f,67,79,2e,64,61,74,00
"Value1"=hex(0):32,e4,e2,c8,85,73,c0,01
"Value2"=hex(0):88,a6,ea,1f
задача только получить значения, остальное написать наверное даже я смогу »
Только значения в файле, а не на экране :)
Только значения в файле, а не на экране »
Как перенаправить стандартный вывод в файл? (http://www.rsdn.ru/article/winshell/batanyca.xml#ERBAC)
Какой сильный блог по батникам! Пожалуй я с него учиться начну даже.
Однако, amel27, тот код что тут выше не работает почему-то?
....Я вообще-то предполагал такой ход мысли, сначала экспортируется HKLM\Software\Classes\Trilogy,
так как все три value в нём "нам" нужны, например, reg.exe... Но потом надо просто модифицыровать
полученный файл reg > inf в чём я уже не силён.
В Вашем примере я не увидел утилиту reg.exe поэтому вообще не понимаю как это работает,
да и код слишком сложный для меня )
---
Кстати, можно использовать какой нибудь grep или sed из GnuWin32 коллекции,
только такое чтоб утилиту можно было с сборкой носить вместе с собой, какойнить файлик exe без зависимостей. ??
Это само собой вопрос, так как я не шарю в gnu утилитах так же как и в батниках к сожалению.
В Вашем примере я не увидел утилиту reg.exe »4-я строчка (в скобках)
тот код что тут выше не работает почему-то »код всегда (как-то) работает, вопрос только как надо или что (конкретно) не устраивает... сами же сказали - "только получить значение"... но если надо, вот полный вариант:
@Echo Off
Set INF=%~n0.inf
Set HIV=HKLM
Set KEY=Software\Classes\Trilogy
(Echo [Version]
Echo Signature=$Windows NT$
Echo.
Echo [DefaultInstall]
Echo AddReg=Add.Reg
Echo.
Echo [Add.Reg]
Echo HKLM,"Software\Microsoft\Windows\CurrentVersion\App Path\Trilogy.exe",,0x4000,"G:\$_\Proton\Trilogy\Trilogy.exe"
Echo HKLM,"Software\Microsoft\Windows\CurrentVersion\App Path\Trilogy.exe","Path",0x4000,"G:\$_\Proton\Trilogy"
)>%INF%
For /F "Tokens=1,3 Delims= " %%i In ('REG QUERY "%HIV%\%KEY%"^|Find "REG_NONE"') Do (
Set VAL=%%i& Set BIN=%%j& Set STR=& Call :BIN2INF)
Exit /B
:BIN2INF
Set STR=%STR%,%BIN:~,2%
Set BIN=%BIN:~2%
If Not "%BIN%"=="" GoTo BIN2INF
Echo %HIV%,"%KEY%","%VAL%",0x20001%STR%>>%INF%
GoTo :EOF
amel27, отлично!!! Очень хорошо! Я виноват, недоходчиво объясняю как всегда!
Мне надо эти строчки:
"Value3"=hex(0):44,3a,5c,26,6e,5c,32,31,5c,54,72,69,6c,6f,67,79,2e,64,61,74,00
"Value1"=hex(0):32,e4,e2,c8,85,73,c0,01
"Value2"=hex(0):88,a6,ea,1f
Из первого поста картинка - http://j.imagehost.org/0295/Snap1_1.png
Но то что строчки из Software\Microsoft\Windows\CurrentVersion\App Path\Trilogy.exe сохранились это не плохо, это тоже пригодится.
Хм. может я сам переделаю, просто заменив значения? Но если есть время лучше с вашей помощью,
ато я понаделаю косяков.
(смысл в том что все эти Values могут иметь случайное значение, поэтому их надо именно считать из реестра,
но длина их как я понял фиксированная, хотя это наверное не важно.)
--- Ой! Я кажись понял, наверное эти Value просто не считались этим батником! Хм... тогда глюк выходит. :(
Вообщем строки типа "Value1"=hex(0):32,e4,e2,c8,85,73,c0,01 не получились. Где то сбой. :(
----
А вообще идея очень интересная, добраться до value через /QUERY и перенаправить вывод в файл,
я в это врубился приблизительно, крута!
Вообщем строки типа "Value1"=hex(0):32,e4,e2,c8,85,73,c0,01 не получились. Где то сбой. »взял REG-файл из вашего поста #3, восстановил у себя на системе, отработал батником - INF создался и все ключи Value1-3 на месте
Find: REG_NONE: No such file or »
попробую включить телепатию - у Вас вместо штатного FIND.EXE (%windir%\System32\) вызывается другой... кстати, очень похоже на FIND из пакета "GNU utilities for Win32" - наберите в командной строке: "FIND /?" (win) или "find --help" (nix), проверьте переменную PATH и т.п.
Телепатия сработала!!! :laugh: У меня действительно натыкано GNU utilities for Win32 там!
Правда я уже давно решил переименовать их в find32.exe вид, чтоб не путаться.
Хорошо, раз работает верю! :) Буду у себя рыть!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.