更新注册表键值(批处理)
源码:
@echo off
REM *******************************************
REM Modify some ValueNames in registry table
REM *******************************************
title modify ValueName in registry
set search[0].key="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge"
set search[0].value=DisplayVersion
set search[1].key="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge"
set search[1].value=DisplayVersion1
set search[2].key="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge"
set search[2].value=DisplayName
set search[3].key="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge"
set search[3].value=DisplayName1
for /L %%i in ('0 1 3') do (
echo ===============================================================
REM call echo key is set to: %%search[%%i].key%%
REM call echo value is set to :%%search[%%i].value%%
call :MODIFY_REG_VALUENAME %%search[%%i].key%% %%search[%%i].value%%
)
GOTO EOF
:MODIFY_REG_VALUENAME
set REG_KEY_FOR_SEARCH=%1
set REG_SUBKEY_FOR_SUBSTITUE=%2
echo reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE%
reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE% 2>nul
if %ERRORLEVEL%==0 (
for /f "skip=2 tokens=1,2* delims= " %%i in ('reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE%') do (
if "%%i"=="%REG_SUBKEY_FOR_SUBSTITUE%" (
echo -- find ValueName: %REG_SUBKEY_FOR_SUBSTITUE%
REM echo name:%%i, type:%%j, value:%%k
REM reg add a new ValueName, copy from searched one
echo reg add %REG_KEY_FOR_SEARCH% /v "%%i1" /t "%%j" /d "%%k" /f
reg add %REG_KEY_FOR_SEARCH% /v "%%i1" /t "%%j" /d "%%k" /f >nul
if %ERRORLEVEL%==0 (
echo -- added ValueName: %%i1
REM reg delete origin ValueName
echo reg delete %REG_KEY_FOR_SEARCH% /v "%%i" /f
reg delete %REG_KEY_FOR_SEARCH% /v "%%i" /f >nul
if %ERRORLEVEL%==0 (
echo -- deleted origin ValueName: %REG_SUBKEY_FOR_SUBSTITUE%
) else (
echo --- cannot delete origin ValueName: %REG_SUBKEY_FOR_SUBSTITUE%
)
) else (
echo --- cannot add ValueName: %%i1
)
)
)
) else (
echo --- cannot find ValueName: %REG_SUBKEY_FOR_SUBSTITUE%
)
:EOF
解释:以edge为例,已安装edge的机器可以运行。
注册表中的键值包含名字Name,类型Type,值Data。
修改注册表中的键值:通过搜索到的键值,保存该键值的属性并以它为基础,添加新的键值;再删除该键值,达到修改键值的目的。
如, DisplayName 被修改为 DisplayName1。
更新:增加可以配置的newvalue
@echo off REM ******************************************* REM Modify some ValueName in registry table REM ******************************************* title modify ValueName in registry set search[0].key="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\fooSoftware" set search[0].value=DisplayVersion set search[0].newvalue=DisplayVersion1 set search[1].key="HKLM\SOFTWARE\Classes\fooSoftware" set search[1].value=InstallDir set search[1].newvalue=InstallDir1 for /L %%i in ('0 1 1') do ( echo =============================================================== REM call echo key is set to: %%search[%%i].key%% REM call echo value is set to :%%search[%%i].value%% call :MODIFY_REG_VALUENAME %%search[%%i].key%% %%search[%%i].value%% %%search[%%i].newvalue%% ) GOTO EOF :MODIFY_REG_VALUENAME set REG_KEY_FOR_SEARCH=%1 set REG_SUBKEY_FOR_SUBSTITUE=%2 set REG_NEW_SUBKEY_FOR_SUBSTITUE=%3 echo reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE% reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE% 2>nul if %ERRORLEVEL%==0 ( for /f "skip=2 tokens=1,2* delims= " %%i in ('reg query %REG_KEY_FOR_SEARCH% /v %REG_SUBKEY_FOR_SUBSTITUE%') do ( if "%%i"=="%REG_SUBKEY_FOR_SUBSTITUE%" ( echo -- find ValueName: %REG_SUBKEY_FOR_SUBSTITUE% REM echo name:%%i, type:%%j, value:%%k REM reg add a new key-value pair echo reg add %REG_KEY_FOR_SEARCH% /v "%REG_NEW_SUBKEY_FOR_SUBSTITUE%" /t "%%j" /d "%%k" /f reg add %REG_KEY_FOR_SEARCH% /v "%REG_NEW_SUBKEY_FOR_SUBSTITUE%" /t "%%j" /d "%%k" /f >nul if %ERRORLEVEL%==0 ( echo -- added ValueName: %REG_NEW_SUBKEY_FOR_SUBSTITUE% REM reg delete origin key-value pair echo reg delete %REG_KEY_FOR_SEARCH% /v "%%i" /f reg delete %REG_KEY_FOR_SEARCH% /v "%%i" /f >nul if %ERRORLEVEL%==0 ( echo -- deleted origin ValueName: %REG_SUBKEY_FOR_SUBSTITUE% ) else ( echo --- cannot delete origin ValueName: %REG_SUBKEY_FOR_SUBSTITUE% ) ) else ( echo --- cannot add ValueName: %REG_NEW_SUBKEY_FOR_SUBSTITUE% ) ) ) ) else ( echo --- cannot find ValueName: %REG_SUBKEY_FOR_SUBSTITUE% ) :EOF

浙公网安备 33010602011771号