Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Работа с реестром

Ответить
Настройки темы
CMD/BAT - [решено] Работа с реестром

Аватара для Raf-9600

Старожил


Сообщения: 398
Благодарности: 21

Профиль | Отправить PM | Цитировать


Ктонить может реализовать с помощью батника или VB скрипта такую задачку:

1. Создание резервной копии перечисленных ниже ключей реестра (если они есть).
2. Внесение ключей реестра перечисленных ниже. При том путь “D:\Games\Diablo II” должен быть относительным. Т.е. вместо жёсткого указания, он должен указывать на папку, в которой находиться скрипт.
читать дальше »
Код: Выделить весь код
[HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\Diablo II]
"DiabloIICD"=""
"InstallPath"="D:\\Games\\Diablo II"
"Program"="D:\\Games\\Diablo II\\Diablo II.exe"
"Save Path"="D:\\Games\\Diablo II\\save\\"
"SmallInstall"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\Diablo II\VideoConfig]
"DeviceDDraw"=dword:00000000
"DirectDrawDevice0"=dword:00000001
"Render"=dword:00000000
"VidTestRequired"="true"

[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Diablo II]
"DiabloIICD"="D:\\Games\\Diablo II"
"InstallPath"="D:\\Games\\Diablo II"
"Program"="D:\\Games\\Diablo II\\Diablo II.exe"
"Save Path"="D:\\Games\\Diablo II\\save\\"
"SmallInstall"=dword:00000000
"Resolution"=dword:00000001
"Always Run"=dword:00000001

[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Diablo II\VideoConfig]
"DeviceDDraw"=dword:00000000
"DirectDrawDevice0"=dword:00000001
"dwFlags"=dword:0000029b
"Render"=dword:00000001
"DeviceName"=""

3. Запуск Diablo II.exe с параметром –direct
4. Проверка ли запущен процесс Game.exe
5. Как только процесс Game.exe исчезает, все внесённые скриптом ключи реестра должны удаляться, после чего должно происходить восстановление тех ключей, которые были забэкаплены в самом начале.

Собсно это все нужно для создания portable версии игры.

Отправлено: 12:52, 23-06-2012

 

Ветеран


Сообщения: 1496
Благодарности: 384

Профиль | Отправить PM | Цитировать


Посмотрите команду REG. Например, 'reg export /?' и 'reg add /?'

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.


Отправлено: 17:37, 26-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


извиняюсь

Последний раз редактировалось Anufriev, 28-06-2012 в 11:51. Причина: написал не вто тему


Отправлено: 11:50, 28-06-2012 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата Raf-9600:
Ктонить может реализовать с помощью батника или VB скрипта такую задачку: »
Примерно так:
Код: Выделить весь код
@Echo Off
Set lmsw=HKLM\SOFTWARE\Blizzard Entertainment\Diablo II
Set cusw=HKCU\SOFTWARE\Blizzard Entertainment\Diablo II
Set newPath=%~dp0
Set newPath=%newPath:~0,-1%
Reg Export "%lmsw%" "old_lmsw.reg"
Reg Export "%cusw%" "old_cusw.reg"
Reg Add "%lmsw%" /v "DiabloIICD" /t REG_SZ /d "" /f
Reg Add "%lmsw%" /v "InstallPath" /t REG_SZ /d "%newPath%" /f
Reg Add "%lmsw%" /v "Program" /t REG_SZ /d "%newPath%\Diablo II.exe" /f
Reg Add "%lmsw%" /v "Save Path" /t REG_SZ /d "%newPath%\save\\" /f
Reg Add "%lmsw%" /v "SmallInstall" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "DeviceDDraw" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "DirectDrawDevice0" /t REG_DWORD /d "0x1" /f
Reg Add "%lmsw%\VideoConfig" /v "Render" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "VidTestRequired" /t REG_SZ /d "true" /f
Reg Add "%cusw%" /v "DiabloIICD" /t REG_SZ /d "%newPath%" /f
Reg Add "%cusw%" /v "InstallPath" /t REG_SZ /d "%newPath%" /f
Reg Add "%cusw%" /v "Program" /t REG_SZ /d "%newPath%\Diablo II.exe" /f
Reg Add "%cusw%" /v "Save Path" /t REG_SZ /d "%newPath%\save\\" /f
Reg Add "%cusw%" /v "SmallInstall" /t REG_DWORD /d "0x0" /f
Reg Add "%cusw%" /v "Resolution" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%" /v "Always Run" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "DeviceDDraw" /t REG_DWORD /d "0x0" /f
Reg Add "%cusw%\VideoConfig" /v "DirectDrawDevice0" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "dwFlags" /t REG_DWORD /d "0x29b" /f
Reg Add "%cusw%\VideoConfig" /v "Render" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "DeviceName" /t REG_SZ /d "" /f
"%newPath%\Diablo II.exe" –direct
:_loop
Ping -n 6 localhost>Nul
TASKLIST /FI "IMAGENAME eq Game.exe" | Find "Game.exe">Nul
If %ErrorLevel%==0 GoTo _loop
Regedit /S "old_lmsw.reg"
Regedit /S "old_cusw.reg"
Exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 28-06-2012 | #4


Аватара для Raf-9600

Старожил


Сообщения: 398
Благодарности: 21

Профиль | Отправить PM | Цитировать


gora, благодарю. Команды для удаления создаваемых ключей я сам допишу. Но возникает одна проблемка: то что в x32 системах записывается в HKLM\SOFTWARE, то в x64 системах пишется в HKLM\SOFTWARE\Wow6432Node. Возможно ли как-то учесть этот момент?

И за одно хотелось бы чтобы батник создавал пару ключей в зависимости от версии Windows. Т.е. если версия 6.0.6000 или более поздняя, чтобы создавались эти ключи:

Для системы любой разрядности:
Код: Выделить весь код
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game]
"Name"="Game.exe"
"ID"=dword:4E9DE60E
"Flags"=hex:00,08,00,00
Для x64 дополнительно ещё эти:
Код: Выделить весь код
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Game]
"Name"="Game.exe"
"ID"=dword:4E9DE60E
"Flags"=hex:00,08,00,00

Отправлено: 14:19, 28-06-2012 | #5


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Raf-9600, так?
Код: Выделить весь код
@Echo Off
SET xOS=x86
IF Defined PROCESSOR_ARCHITEW6432 (SET xOS=x64) ELSE IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" SET xOS=x64

Set sub=
IF %xOS%==x64 Set sub=Wow6432Node\

Set lmsw=HKLM\SOFTWARE\%sub%Blizzard Entertainment\Diablo II
Set cusw=HKCU\SOFTWARE\Blizzard Entertainment\Diablo II
Set newPath=%~dp0
Set newPath=%newPath:~0,-1%
Reg Export "%lmsw%" "old_lmsw.reg"
Reg Export "%cusw%" "old_cusw.reg"
Reg Add "%lmsw%" /v "DiabloIICD" /t REG_SZ /d "" /f
Reg Add "%lmsw%" /v "InstallPath" /t REG_SZ /d "%newPath%" /f
Reg Add "%lmsw%" /v "Program" /t REG_SZ /d "%newPath%\Diablo II.exe" /f
Reg Add "%lmsw%" /v "Save Path" /t REG_SZ /d "%newPath%\save\\" /f
Reg Add "%lmsw%" /v "SmallInstall" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "DeviceDDraw" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "DirectDrawDevice0" /t REG_DWORD /d "0x1" /f
Reg Add "%lmsw%\VideoConfig" /v "Render" /t REG_DWORD /d "0x0" /f
Reg Add "%lmsw%\VideoConfig" /v "VidTestRequired" /t REG_SZ /d "true" /f
Reg Add "%cusw%" /v "DiabloIICD" /t REG_SZ /d "%newPath%" /f
Reg Add "%cusw%" /v "InstallPath" /t REG_SZ /d "%newPath%" /f
Reg Add "%cusw%" /v "Program" /t REG_SZ /d "%newPath%\Diablo II.exe" /f
Reg Add "%cusw%" /v "Save Path" /t REG_SZ /d "%newPath%\save\\" /f
Reg Add "%cusw%" /v "SmallInstall" /t REG_DWORD /d "0x0" /f
Reg Add "%cusw%" /v "Resolution" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%" /v "Always Run" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "DeviceDDraw" /t REG_DWORD /d "0x0" /f
Reg Add "%cusw%\VideoConfig" /v "DirectDrawDevice0" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "dwFlags" /t REG_DWORD /d "0x29b" /f
Reg Add "%cusw%\VideoConfig" /v "Render" /t REG_DWORD /d "0x1" /f
Reg Add "%cusw%\VideoConfig" /v "DeviceName" /t REG_SZ /d "" /f

Ver | Find "6." >Nul && (
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "Name" /t REG_SZ /d "Game.exe" /f
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "ID" /t REG_DWORD /d "0x4E9DE60E" /f
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "Flags" /t REG_BINARY /d "00080000" /f
	IF %xOS%==x64 (
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "Name" /t REG_SZ /d "Game.exe" /f
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "ID" /t REG_DWORD /d "0x4E9DE60E" /f
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "Flags" /t REG_BINARY /d "00080000" /f
	)
)

"%newPath%\Diablo II.exe" –direct
:_loop
Ping -n 6 localhost>Nul
TASKLIST /FI "IMAGENAME eq Game.exe" | Find "Game.exe">Nul
If %ErrorLevel%==0 GoTo _loop
Regedit /S "old_lmsw.reg"
Regedit /S "old_cusw.reg"
Exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:41, 28-06-2012 | #6


Аватара для Raf-9600

Старожил


Сообщения: 398
Благодарности: 21

Профиль | Отправить PM | Цитировать


gora, Прекрасно! А можно ли через батник реализовать ещё один штрих - проверку версии файла?

Допустим чтобы значение в этих ключах различалось в зависимости от версии Game.exe:
Код: Выделить весь код
"HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game /v "ID" /t REG_DWORD"
"HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game /v "ID" /t REG_DWORD"
Если версия Game.exe = 1.0.13.64 то в обеих ветках значение ключа "ID" должно быть:
"0x4E9DE60E"

А если версия Game.exe = 1.0.13.60, то:
"0x4B95CA4B"

При том нужно чтобы остальные правила (проверка на версию Windows и разрядность) по прежнему тоже действовали на эти ключи.

Последний раз редактировалось Raf-9600, 29-06-2012 в 00:29.


Отправлено: 15:50, 28-06-2012 | #7


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
...
(Echo Set fso = WScript.CreateObject^("Scripting.FileSystemObject"^)
Echo Set objArgs = WScript.Arguments
Echo fso.OpenTextFile^(fso.GetParentFolderName^(WScript.ScriptFullName^) ^& "\verEXE.txt", 2, True^).WriteLine fso.GetFileVersion^(objArgs^(0^)^))>filever.vbs
cscript -nologo filever.vbs "%newPath%\Game.exe"
For /F "Tokens=* delims=" %%a In ('Type verEXE.txt') Do Set verExe=%%a
Del /Q filever.vbs verEXE.txt 
:: для версии 1.0.13.64
Set ID=0x4E9DE60E
If %verExe%==1.0.13.60 Set ID=0x4B95CA4B

Ver | Find "6." >Nul && (
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "Name" /t REG_SZ /d "Game.exe" /f
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "ID" /t REG_DWORD /d "%ID%" /f
	Reg Add "HKLM\SOFTWARE\Microsoft\DirectDraw\Compatibility\Game" /v "Flags" /t REG_BINARY /d "00080000" /f
	IF %xOS%==x64 (
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "Name" /t REG_SZ /d "Game.exe" /f
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "ID" /t REG_DWORD /d "%ID%" /f
		Reg Add "HKLM\SOFTWARE\%sub%Microsoft\DirectDraw\Compatibility\Game" /v "Flags" /t REG_BINARY /d "00080000" /f
	)
)
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:04, 28-06-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Работа с реестром

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Работа с реестром TERMINAL AutoIt 10 15-06-2012 11:41
CMD/BAT - Работа с реестром cmd Bruce Wayne Скриптовые языки администрирования Windows 3 04-03-2012 20:04
C/C++ - Работа с реестром С++ ShadowMas Программирование и базы данных 15 20-04-2010 11:40
Работа с реестром semen1967 Хочу все знать 18 27-11-2004 12:05
Работа с реестром Artya Программирование и базы данных 3 08-09-2003 10:19




 
Переход