注册表Registry概述
操作环境:Windows10 Prefessional
(1)简介:注册表Registry是Windows系统中的一个重要的数据库,用于存储系统和应用程序的设置信息;其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。
(2)启动Registry注册表图形化界面:
A.命令行启动,对应32/64位的操作系统
regedit(regedit.exe测试也可)
regedit32
B."运行"输入:regedit(regedit.exe测试也可)
(3)命令行操作Registry注册表:reg命令
(4)Registry注册表的文件结构:打开图形化界面进行查看,有5个根键。
说明 | 根键 | 简写 |
---|---|---|
基层类别键,存储应用程序运行时必需的信息 | hkey_classes_root | HKCR |
系统当前用户信息 | hkey_current_user | HKCU |
计算机配置,有9个子键,有SAM,很重要 | hkey_local_machine | HKLM |
缺省用户设置和登录用户的信息 | hkey_users | HKU |
计算机的当前设备情况,比如显示器 | hkey_current_config | HKCC |
命令行操作注册表
现实问题:在实战中往往拿到的是Windows主机shell,需要开启3389端口,这个时候需要在命令行编辑注册表。
命令行编辑注册表:通过reg命令进行操作。
(1)基础的命令格式,以及查看命令帮助:
注册表命令:reg
注册表命令格式:REG Operation [Parameter List],其中有12个操作数。
查看帮助reg /?
查看参数帮助reg query /?
(2)测试:目前已对query、add两个参数进行测试。
测试数据:图形化页面新建子键计算机\HKEY_CURRENT_USER\test
,数据为test_data
。
接下来对常用命令进行简要说明,并搭配相关的测试实例:
A.关于键名keyname,格式为[\\Machine\]FullKey,其中Machine表示远程机器名,FullKey的格式
是ROOTKEY\SubKey。本地操作键名举例:hkey_local_machine\test。
关于/reg:32和/reg:64,指定应该使用 32/64 位注册表视图访问的注册表项,通常忽略。
B.查询query的命令格式`REG QUERY KeyName [/v [ValueName] | /ve] [/s]`。
查询操作在主键之后提供一个参数接口,通常忽略。
C.添加和修改add的命令格式:一般需要三个参数,/v表示项名,/t表示数据类型,/d表示数据内容。
覆盖时还需要第4个参数/f,无需提示就直接覆盖现有注册表项。
添加举例:reg add HKEY_CURRENT_USER\test /v test_add /t REG_SZ /d data_add
覆盖举例:reg add HKEY_CURRENT_USER\test /v test_add /t REG_SZ /d data_add2(有提示)
直接覆盖:reg add HKEY_CURRENT_USER\test /v test_add /t REG_SZ /d data_add3 -f
命令行实战操作
常用的注册表项
(1)本地测试开启3389端口
开启3389端口命令:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭3389端口命令:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
说明(好家伙,本地Win10的3389端口一直开着呢):
A.Terminal Server的空格需要被替换,Win10本地测试直接使用空格,提示“错误:无效语法”。
B.Win10本地测试,必须以管理员身份运行cmd窗口,否则执行命令会提示“错误:拒绝访问”。
命令参考
开启3389端口
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
run
本地测试说明
A.环境变量 command'xxx'没有定义
参考
《注册表是什么东西?》
https://www.php.cn/faq/417818.html
《有关终端的一些tips》,2014-05
https://www.cnblogs.com/debugzer0/p/3761692.html
《如何在cmd下开启或者关闭3389端口?》, 2018-11
https://blog.csdn.net/weixin_41260116/article/details/84395224