|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Работа с реестром |
|
CMD/BAT - [решено] Работа с реестром
|
Старожил Сообщения: 398 |
Ктонить может реализовать с помощью батника или VB скрипта такую задачку:
1. Создание резервной копии перечисленных ниже ключей реестра (если они есть). 2. Внесение ключей реестра перечисленных ниже. При том путь “D:\Games\Diablo II” должен быть относительным. Т.е. вместо жёсткого указания, он должен указывать на папку, в которой находиться скрипт. 3. Запуск Diablo II.exe с параметром –direct 4. Проверка ли запущен процесс Game.exe 5. Как только процесс Game.exe исчезает, все внесённые скриптом ключи реестра должны удаляться, после чего должно происходить восстановление тех ключей, которые были забэкаплены в самом начале. Собсно это все нужно для создания portable версии игры. |
|
Отправлено: 12:52, 23-06-2012 |
Ветеран Сообщения: 1496
|
Профиль | Отправить PM | Цитировать Посмотрите команду REG. Например, 'reg export /?' и 'reg add /?'
|
------- Отправлено: 17:37, 26-06-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать извиняюсь
|
Последний раз редактировалось Anufriev, 28-06-2012 в 11:51. Причина: написал не вто тему Отправлено: 11:50, 28-06-2012 | #3 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Raf-9600:
@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 |
Старожил Сообщения: 398
|
Профиль | Отправить 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 |
|
Отправлено: 14:19, 28-06-2012 | #5 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить 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 |
Старожил Сообщения: 398
|
Профиль | Отправить 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" "0x4E9DE60E" А если версия Game.exe = 1.0.13.60, то: "0x4B95CA4B" При том нужно чтобы остальные правила (проверка на версию Windows и разрядность) по прежнему тоже действовали на эти ключи. |
Последний раз редактировалось Raf-9600, 29-06-2012 в 00:29. Отправлено: 15:50, 28-06-2012 | #7 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Работа с реестром | 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 |
|