Windows注册表的结构和编辑

Posted hunpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows注册表的结构和编辑相关的知识,希望对你有一定的参考价值。


注册表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_rootHKCR
系统当前用户信息hkey_current_userHKCU
计算机配置,有9个子键,有SAM,很重要hkey_local_machineHKLM
缺省用户设置和登录用户的信息hkey_usersHKU
计算机的当前设备情况,比如显示器hkey_current_configHKCC

在这里插入图片描述


命令行操作注册表

  现实问题:在实战中往往拿到的是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

以上是关于Windows注册表的结构和编辑的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

如何测量代码片段的调用次数和经过时间

带有固定按钮的片段

Windows 7 上的注册表编辑不会为 DefaultUserName 和 DefaultPassword 保留