bat 写注册表详解
清泛原创
实例:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "test" /d "c:\windows\system32\regedit" /f
命令提示符 reg /? 看一下帮助。
关于reg add:
REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
KeyName [\\Machine\]FullKey 远程机器的机器名 - 忽略默认到当前机器。远程机器上只有 HKLM 和 HKU。
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所选 ROOTKEY 下注册表项的完整名
/v 所选项之下要添加的值名
/ve 为注册表项添加空白值名<无名称>
/t RegKey 数据类型 [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ] 如果忽略则采用 REG_SZ
/s 指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符。如果忽略则将 "\0" 用作分隔符
/d 要分配给添加的注册表 ValueName 的数据
/f 不用提示就强行改写现有注册表项
例如:
REG ADD \\ABC\HKLM\Software\MyCo
添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一个值(名称: Data 类型: REG_BINARY 数据: fe340ead)
REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
添加一个值(名称: MRU 类型: REG_MUTLI_SZ 数据: fax\0mail\0\0)
REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一个值(名称: Path 类型: REG_EXPAND_SZ 数据: %systemroot%)
用INF 脚本修改注册表。同样先举一个例子,然后做详细讲解。
[VERSION]
SIGNATURE=$CHICAGO$
[DEFAULTINSTALL]
ADDREG=MY.ADD.REG
DELREG=MY.DEL.REG
[MY.ADD.REG]
HKLM,SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\WINLOGON,AUTOADMINLOGON,0,"0"
HKCU,CONTROL PANELDESKTOP,SMOOTHSCROLL,1,01,00,00,00
HKCU,CONTROL PANELDESKTOP,SCREENSAVEUSEPASSWORD,1,00,00,00,00
[MY.DEL.REG]
HKCU,MYKEY
HKLM,SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\WINLOGON,DEFAULTUSERNAME
HKLM,SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\WINLOGON,DEFAULTUSERNAME
1、[VERSION] 是文件头。SIGNATURE=$CHICAGO$ 是指针对WINDOWS,CHICAGO是WINDOWS95的内部名称,要编辑注册表必须以这两句开头。
2、[DEFAULTINSTALL]段指出INF文件包含的其他段,ADDREG 和DELREG是键,有特殊意义。他指出要添加或删除的注册表项段名。
3、WINDOWS98总是先处理DELREG段,后处理ADDREG段,这可能会对我们的应用有所帮助。
[MY.ADD.REG]
HKCU,MYKEY,MYVALUE,0,"STRING" 添加名为MYVALUE的字符串值项到键MYKEY下其值设为STRING
HKCU,MYKEY,MYVALUE,,STRING 添加名为MYVALUE的字符串值项到MYKEY,将其值设为STRING
HKCU,MYKEY,MYVALUE,1,77,34,05,20 添加名为MYVALUE的二进制值项到键MYKEY下,其值设为二进制值77,34,05,20
HKCU,MYKEY,0,"DEFAULT VALUE" 设置键MYKEY的缺省值项为字符串DEFAULT VALUE
HKCU,MYKEY,,"DEFAULT VALUE" 设置键MYKEY的缺省值项并将其值设为字符串DEFAULT VALUE
HKCU,MYKEY 添加注册表键MYKEY但不设置其值
[MY.DEL.REG]
HKCU,MYKEY,MYVALUE 从键MYKEY 中删除值项MYVALUE
HKCU,MYKEY 删除键MYKEY及其全部子键,即删除全部分支
下面是一个自动清除MRU记录的INF文件:CLEAN.INF
[VERSION]
SIGNATURE=$CHICAGO$
[DEFAULTINSTALL]
DELREG=DELTEGKEY
[DELREGKEY]
HKCU, SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\DOC FIND SPEC MRU,
HKCU, SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\FINDCOMPUTERMRU,
HKCU, SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\RECENTDOCS,
HKCU, SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\RUNMRU
清除MRU和WINDOWSRENCENT 的批处理文件:CLEAN.BAT
@ECHO OFF
C:\WINDOWS\RUNDLL.EXE SETUPX.DLL,INSTALLHINFSECTION DEFAULTINSTALL 132 CLEAN.INF
ECHOY ERASE C:\WINDOWS\RECENT
注意:在扩充字符串中使用双百分比符号( %% )各位可将CLEAN.BAT 加入HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSIONRUN中让电脑自动在启动时完成任务。