欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-22 09:38:57
好在系统自带的regedit.exe足够用了。 1,读取注册表 先将想查询的注册表项导出,再用type查看,比如: c:\>regedit /e 1.reg "hke...
好在系统自带的regedit.exe足够用了。

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

c:\>regedit /e 1.reg "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\rdp-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_machine\software\microsoft\telnetserver\1.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_machine\system\currentcontrolset\services\serv-u]

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

[hkey_local_machine\software\microsoft\windows\currentversion\run]
"kavrun"=-

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

[version]
signature="$windows nt$"
[defaultinstall]
addreg=my_addreg_name
delreg=my_delreg_name
[my_addreg_name]
hklm,software\microsoft\telnetserver\1.0,telnetport,0x00010001,2323
hklm,software\microsoft\telnetserver\1.0,ntlm,0x00010001,1
[my_delreg_name]
hklm,system\currentcontrolset\services\serv-u
hklm,software\microsoft\windows\currentversion\run,kavrun

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

rundll32.exe setupapi,installhinfsection defaultinstall 128 c:\path\reg.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文件中的项目都是大小写不敏感的。