知识屋:最实用的电脑技术知识网站
所在位置:首页 > 电脑技术

CMD下读取/修改/删除注册表项的方法

发布时间:2012-06-16 01:08:17作者:知识屋

先说注册表。很多命令行下访问注册表的工具都是交互式的,溢出产生的shell一般不能再次重定向输入/输出流,所以无法使用
好在系统自带的regedit.exe足够用了。 

1,读取注册表 
先将想查询的注册表项导出,再用type查看,比如: 

C:>regedit /e 1.reg "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" 

C:>type 1.reg | find "PortNumber" 
"PortNumber"=dword:00000d3d 

C:>del 1.reg 

所以终端服务的端口是3389(十六进制d3d) 

2,修改/删除注册表项 
先echo一个reg文件,然后导入,比如: 

echo Windows Registry Editor Version 5.00 >1.reg 
echo. >>1.reg 
echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftTelnetServer1.0] >>1.reg 
echo "TelnetPort"=dword:00000913 >>1.reg 
echo "NTLM"=dword:00000001 >>1.reg 
echo. >>1.reg 
regedit /s 1.reg 

将telnet服务端口改为2323(十六进制913),NTLM认证方式为1。 

要删除一个项,在名字前面加减号,比如: 

[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesServ-U] 

要删除一个值,在等号后面用减号,比如: 

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun] 
"KAVRun"=- 

3,用inf文件访问注册表 
上面对注册表的三个操作,也可以用下面这个inf文件来实现: 

[Version] 
Signature="$WINDOWS NT$" 
[DefaultInstall] 
AddReg=My_AddReg_Name 
DelReg=My_DelReg_Name 
[My_AddReg_Name] 
HKLM,SOFTWAREMicrosoftTelnetServer1.0,TelnetPort,0x00010001,2323 
HKLM,SOFTWAREMicrosoftTelnetServer1.0,NTLM,0x00010001,1 
[My_DelReg_Name] 
HKLM,SYSTEMCurrentControlSetServicesServ-U 
HKLM,SOFTWAREMicrosoftWindowsCurrentVersionRun,KAVRun 

将它写入c:pathreg.inf然后用下面这个命令“安装”: 

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:pathreg.inf 

几点说明: 
1,[Version]和[DefaultInstall]是必须的,AddReg和DelReg至少要有一个。My_AddReg_Name和My_DelReg_Name可以自定义。 
0x00010001表示REG_DWORD数据类型,0x00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0x00020000表示REG_EXPAND_SZ。 
2323也可以用0x913代替。 
关于inf文件的详细信息,可以参考DDK帮助文档。 
2,InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。 
128表示给定路径,该参数其他取值及含义参见MSDN。 
特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。 
3,inf文件中的项目都是大小写不敏感的。
(文章内容如有侵权,敬请来信告知,我们将及时撤销)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜