Windows注册表的学习
- 什么是注册表
注册表是Windows在Win95/98系统开始引入的一种核心数据库,里面存放着各类的配置信息、参数等、直接控制着系统的启动、硬件的装载以及Winodws程序的运行
- 手册表的功能
记录用户安装在计算机上的软件和每个程序的相关信息,通过他可以控制硬件、软件、用户环境和操作系统界面的数据信息文件.
注册表的结构
快捷键regedit可以打开注册表,查看详细的结构
- 不同机器注册表结构
win7

win10

win08

可以看到大部分机器的注册表的根键是差不多的.
- 简单结构
根键:被称为HKEYxxxxxx,某一项的句柄项:附加文件夹和一个或多个值
子项:在某一个项(父项)下面出现的项(子项)
项值:带有一个名称和一个值的有序值,每个项都可包括任何数量的值项,值项由三个部分组成:名称、数据类型和数据
1.名称:不包括反斜线的字符、数字、代表符和空格的任意组合。同一键中不可有相同的名称
2.数据类型:包括字符串、二进制和双字节等
3.数据:值项的具体值,它的大小可以占用64KB
总体结构分析
注册表包括以下5个根键
- HKEY_CLASSES_ROOT
该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系
驱动程序名,DDE和OLE信息,类ID,编号和应用程序与文档的图标等.
- HKEY_CURRENT_USER
该根键包括当前登录用户的配置信息,包括环境变量,个人程序以及桌面设置等
- HKEY_LOCAL_MACHINE
该根键包括本地计算机的系统信息,包括硬件和操作系统信息。
安全数据和计算机专用的各类软件设置信息
- HKEY_USERS
该根键包括计算机的所有用户使用的配置数据(是所有用户哦)
这些数据只有在用户登录系统时才能访问.
这些信息告诉系统当前用户使用的图标,激活的程序组,开始菜单的内容以及颜色,字体
- HKEY_CURRENT_CONFIG
该根键包括当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的
注册表中的结构详解
- HKEY_CLASSES_ROOT
以AVIFILE这个项来举例

CLSID:分类标识,系统可以用这个类标识来识别相同类型的文件
Compressors:它下面有两个子项:auds:用于设置音频数据压缩程序的类标识;vids:用于设置视频数据压缩程序的类标识
RIFFHandlers:在它的下面有两个类标识:AVI:用于设置AVI文件的类标识;WAVE:用于设置WAVE文件的类标识
Shellex:包括了视频文件的外壳扩展
- HKEY_CURRENT_USER
此根键中保存当前用户的子项信息
- HKEY_LOCAL_MACHINE
此根键中存放的是用来控制系统和软件的设置,由于这些设置是针对那些使用Windows系统的用户而设置的,是一个公共配置信息,所以它与具体的用户没多大关系。
HARDWARE:有四个子项
1. ACPI:存放高级电源管理接口数据
2. DEVICEMAP: 用于存放设备映射
3. DEscriptION: 存放有关系统信息
4. RESOURCEMAP: 用于存放资源列表
SAM子项:跟系统的存储密码有关
SECURITY子项:该子项只是为将来的高级功能而预留的
SOFTWARE子项:该子项中保留的是所有已安装的32位应用程序的信息,各个程序的控制信息分别安装在相应的子项中,由于不同的计算机安装的应用程序互不相同,因此这个子项下面的子项信息也不完全一样。
SYSTEM子项:该子项是启动时所需的信息和修复系统时所需要的信息
另外说明一点:我们转储hash时候导出的注册表就是在这个根键里面的(请参考亮神的文章)
- HKEY_USERS
此根键中保存的是默认用户(default),当前登录用户和软件(software) 的信息.
其中DEFAULT子项是其中最重要的,它的配置是针对未来将会被创建的新用户的。
新用户根据默认用户的配置信息来生成自己的配置文件,该配置文件包括环境、屏幕和声音等多种信息
没有什么好讲的
- HKEY_CURRENT_CONFIG
此根键存放的是当前配置的文件信息.
- 总结
注册表看似是五个分支(五个根键),其实不然,其实就是HKEY_LOCAL_MACHINE、HKEY_USERS这两个才是真正的注册表键,其它都是从某个分支映射出来的,相当于快捷方式或是别名.
注册表的基本操作
- 常用操作
创建项和项值
更新项值的数据
删除项、子项或值项
查找项、值项或数据
- 基本数据类型
二进制值(reg_binary):多数硬件信息以二进制数据存储,而以十六进制格式显示在注册表编辑器中
字符串值(reg_sz):包括字符串的注册表键,使用字符串数据类型
双字节值(reg_dword):是32位信息常显示成4个字节。它在出错控制功能上用处极大,其数据一般以十六进制格式显示在注册表编辑器中。
多字符串值(reg_multi_sz):允许将一系列项目作为单独的一个值使用。对于多种网络协议、多个项目、设备列表以及其他类似的列表项目来说,可以使用多字符串值可扩充字符串值(reg_expand_sz):代表一个可扩展的字符串
- 操作实战
向"HKEY_CURRENT_USER"下创建一个子键"Mikasa",向该子键中添加名为"Mikasa",类型为"REG_ZS",数据为"QAQ"
reg add HKCU\Mikasa /v Mikasa /t REG_SZ /d "QAQ"

参数解释:/v 值 /t 类型 /d 数据
修改注册表中的值
reg add "HKCU\Mikasa" /f /v Saber /t REG_SZ /d "test"

同理的我们可以修改支持远程桌面连接
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
修改支持远程桌面
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
查询一下
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
查询注册表的值
reg query HKLM\xxx /v xxx /v指定值查询,例如查询我们插入的值
reg query HKCU\Mikasa /v Mikasa

导入/导出注册表
reg import c:\test.reg //导入
reg export HKCU\Mikasa c:\test1.reg //导出注册表
上述都是需要管理员权限的,不然会发生错误
删除注册表中的某一项
reg delete HKCU\Mikasa /v Mikasa /f

删除成功
渗透中常用的注册表操作
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0
启动远程桌面
netsh firewall set service remoteadmin enable
netsh firewall set service remotedesktop enable
配置防火墙
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
查看RDP远程连接的端口
reg add "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /f /v RequireSecuritySignature /t REG_DWORD /d 0
开启hash传递
亮神的注册表导出数据库,本地破解hash
reg save HKLM\SYSTEM sys.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\security security.hiv

有师傅总结的关于可能保存密码的注册表键
HKCU\Software\ORL\WinVNC3\Password
HKCU\Software\SimonTatham\PuTTY\Sessions
HKLM\SYSTEM\Current\ControlSet\Services\SNMP
HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions
HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon
也可以用注册表语句检索
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
参考资料
http://ittxx.cn/view/139
http://t3ngyu.leanote.com/post/Windows-Reg
Windows注册表的学习的更多相关文章
- 10#Windows注册表的那些事儿
引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...
- [转帖]Windows注册表内容详解
Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...
- 详解Windows注册表分析取证
大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么 ...
- Windows 注册表是什么?它的作用是什么?
学习目的 了解 Windows 注册表的概念 了解 Windows 注册表的作用 注册表的概念 历史发展 在 Windows 3.x 操作系统中,注册表是一个极小文件,其文件名为 Reg.dat,里面 ...
- 一些实用的Windows注册表
一些实用的Windows注册表 1.去掉快捷方式文件名后面自动添加的"-快捷方式" 在给某个文件创建快捷方式时(选中文件-->右键-->发送到-->桌面快捷方式) ...
- 使用Java修改Windows注册表
使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...
- Java 修改Windows注册表,以实现开机自启动应用程序。
使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...
- Windows注册表的基本知识及应用
转帖:Windows注册表的基本知识及应用 2009-12-23 11:30:56 分类: Windows注册表的基本知识及应用 一.注册表的重要性 在DOS年代,对计算机的内存管理及系统配置主要通 ...
- 1.3 Windows注册表
如何打开Windows注册表呢? 方法一:Win+R打开命令行,再输入regetdit,回车. 方法二:打开计算机,进入系统所在盘,进入Windows\System32文件夹,找到regedt32,双 ...
随机推荐
- PHP curl_multi_select函数
curl_multi_select — 等待所有cURL批处理中的活动连接 说明 int curl_multi_select ( resource $mh [, float $timeout = 1. ...
- RBAC权限设计(一)
序言 RBAC表结构 用户表 角色表 权限表 用户角色(关系)表 角色权限(关系)表 sql脚本 /* Navicat MySQL Data Transfer Source Server : 127. ...
- 根据一个经纬度坐标获取周边最近经纬。Java实现
1.需求:指定一个经纬度坐标,如:(31.2121751783,121.4411213954).周围有一堆经纬度坐标,找出与它最近的那个. 2.实现思路:将给出经纬度看成原点(0,0).周围经纬度定位 ...
- 树状数组,Fenwick Tree
Fenwick Tree, (also known as Binary Indexed Tree,二叉索引树), is a high-performance data structure to cal ...
- 埋坑一: vue中子组件调用兄弟组件方法
小计: 开发中遇到子组件需要调用兄弟组件中的方法,如下写个小demo记录下心得,如果你有好的方法,请到评论区域指教 父组件示例代码: 组件功能解析: 通过$emit获取子组件事件,通过$ref调用子组 ...
- IDEA的骚操作
1.var声明 "jack".var ==>final String name = "jack"; 2.null判空 user.null==>if( ...
- Nginx在Windows平台的配置
Nginx在Windows平台的配置 能够使用Nginx搭建Tomcat集群,并完成负载均衡. 1.什么是Nginx 2.为什么使用Nginx 背景: 互联网飞速发展的今天,大用户量高并发已经成为互联 ...
- QC10迁移到ALM11
转自原作者 http://blog.csdn.net/yhqun/article/details/6981250 服务器A:QC9或QC10服务器B:QC9或QC10 DB Server服务器C:AL ...
- C语言编译exe添加图标
C语言是一门通用的计算机编程语言,可以直接编译为可执行文件.在windows下,可执行文件的后缀是exe,我们编写一个最简单的程序test.c: #include <stdlib.h> i ...
- java并发编程笔记(二)——并发工具
java并发编程笔记(二)--并发工具 工具: Postman:http请求模拟工具 Apache Bench(AB):Apache附带的工具,测试网站性能 JMeter:Apache组织开发的压力测 ...