Karbid87
16-02-2014, 12:02
Необходимо определить сначала версию Windows (XP, Vista, 7, 8), затем определить разрядность (x86(32) или x64), затем в этом же bat файле в соответствии с версией и разрядностью выполнить набор команд по добавлению сведений в реестр.
Команды по добавлению в реестр выглядят так:
win7-x32
[HKEY_LOCAL_MACHINE\SOFTWARE\1111\2222]
"DataFolder"="значение"
"SetupLog"="значение"
"Version"="значение"
"SetupVersion"=значение
"ProgramFolder"="значение"
"SetupFolder"="значение"
"RegData"=hex:значение
"Registration"=hex:значение
"Patches"=hex(7):значение
win7-x64
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\1111\2222]
"DataFolder"="значение"
"SetupLog"="значение"
"Version"="значение"
"SetupVersion"=значение
"ProgramFolder"="значение"
"SetupFolder"="значение"
"RegData"=hex:значение2
"Registration"=hex:значение2
"Patches"=hex(7):значение2
Для других систем всё похоже. Только отличаются значения "RegData","Registration","Patches".
Можно ли полностью автоматизировать добавление данных в реестр с помощью одного bat файла?
Если напишите, буду очень благодарен.
P.S. Изучал тут на форуме как определить версию Windows и разрядность, но не пойму как передать значения. Помогите пожалуйста.
Выкладываю другой вариант. Разрабатывал только на основе Windows 7 X86, поэтому на других системах могут быть сбои. Но сам принцип непорочен. Особо отмечу, что учёл Ваше пожелание:Хотелось бы чтобы всё содержимое прописать в этот батник и reg файлы не нужны были », -- и эту часть кода смело можно вставить в Ваш пакетный файл.
@echo off
for /f "tokens=*" %%i in ('systeminfo 2^>nul') do (
echo %%i|>nul findstr Windows&& set OS=%%i
)||(
echo %%i|>nul findstr /rc:"X[68][46]\-based PC"&& set Arch=%%i&& goto:#
)
:#
for %%i in (
XP
Vista
7
8
) do (
set OS|>nul findstr /c:"Windows %%i"&& set OS=Windows %%i
)
==if defined OS (
echo %OS%
) else (
exit /b
)
set Arch|>nul findstr 64&& set Arch=X64
set Arch|>nul findstr 86&& set Arch=X86
echo %Arch%
chcp 1251>nul
(
echo Windows Registry Editor Version 5.00
echo.
==if %Arch%==X64 (
echo [HKLM\SOFTWARE\Wow6432Node\1111\2222]
) else (
echo [HKLM\SOFTWARE\1111\2222]
)
for %%i in (
""DataFolder"="значение""
""SetupLog"="значение""
""Version"="значение""
""SetupVersion"="значение""
""ProgramFolder"="значение""
""SetupFolder"="значение""
) do (
echo %%~i
)
for /f "tokens=1* delims=*" %%i in ('
findstr /bc:^"%OS% %Arch%^" ^"%~f0^"
') do (
echo %%j
)
)>tmp.reg
echo reg import tmp.reg
echo del tmp.reg
pause>nul
exit /b
###############################################
Windows XP X64 *"RegData"=hex:значение 1
Windows XP X64 *"Registration"=hex:значение 1
Windows XP X64 *"Patches"=hex(7):значение 1
Windows XP X86 *"RegData"=hex:значение 2
Windows XP X86 *"Registration"=hex:значение 2
Windows XP X86 *"Patches"=hex(7):значение 2
Windows Vista X64 *"RegData"=hex:значение 3
Windows Vista X64 *"Registration"=hex:значение 3
Windows Vista X64 *"Patches"=hex(7):значение 3
Windows Vista X86 *"RegData"=hex:значение 4
Windows Vista X86 *"Registration"=hex:значение 4
Windows Vista X86 *"Patches"=hex(7):значение 4
Windows 7 X64 *"RegData"=hex:значение 5
Windows 7 X64 *"Registration"=hex:значение 5
Windows 7 X64 *"Patches"=hex(7):значение 5
Windows 7 X86 *"RegData"=hex:значение 6
Windows 7 X86 *"Registration"=hex:значение 6
Windows 7 X86 *"Patches"=hex(7):значение 6
Windows 8 X64 *"RegData"=hex:значение 7
Windows 8 X64 *"Registration"=hex:значение 7
Windows 8 X64 *"Patches"=hex(7):значение 7
Windows 8 X86 *"RegData"=hex:значение 8
Windows 8 X86 *"Registration"=hex:значение 8
Windows 8 X86 *"Patches"=hex(7):значение 8
Если значения в "hex" и "hex(7)" будут расположены в несколько строк, то префикс надо добавлять к каждой строке, учитывая пробелы в её начале, например:
Windows 7 X86 *"RegData"=hex:a4,00,00,00,03,00,00,00,30,30,33,34,32,2d,4f,45,4d,2d,\
Windows 7 X86 * 38,39,39,32,37,35,32,2d,33,30,30,31,33,00,b2,00,00,00,58,31,35,2d,33,39,32,\
Windows 7 X86 * 37,35,00,00,00,00,00,00,00,35,b6,40,90,2e,72,ef,2f,c9,b3,68,d1,11,76,02,00,\
Windows 7 X86 * 00,00,00,00,58,60,5a,4d,96,66,d6,51,02,00,00,00,00,00,00,00,00,00,00,00,00,\
Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
Windows 7 X86 * 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,68,23,f2,11.
Для "боевого применения" уберите "echo " из команд:
echo reg import tmp.reg
echo del tmp.reg
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.