Window注册表的学习记录
注册表的结构:
概述:注册表是一种树状结构,在很早之前是系统的其他配置信息存放的文件,通常以.ini结尾的文件,因为数量太多不方便管理,后来就整合在一起形成了注册表。你可以按住键盘win+r,然后输入regedit,回车之后打开自己电脑中自带的注册表。如果没有打开,请跳到文章最后,有解决方法。
可以看到如下内容:

根键:以“HEKY_"开头,通常情况下有5大主键,分别如下:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
子键:任一键的子目录都叫做子键,子键是相对来说的
键值:包含键值名,键值类型,数据。是真正存放了计算机及应用程序的配置信息的地方,位于树状结构的叶子节点。键值类型有如下几种:
REG_DWORD DWORD值
REG_BINARY 二进制值
REG_SZ 字符串
REG_MULTI_SZ 多字符串
REG_EXOEND_SZ 可扩展字符串
注册表文件存储位置:
注册表以文件的形式分别存储在:WINDOWS/system32/config文件夹下的”DEFAULT“,”SAM”,“SECURITY",”SOFTWARE",“SYSTEM"五个文件中
五大根建详解:
1.HKEY_CLASSES_ROOT
存放windows中所有数据文件的信息,主要存储不同文件后缀和应用程序间的映射关系,使用户在双击打开文件时,可以找到正确的应用程序。简单来说,就是为了确保我们认知中后缀名内涵的正确性,例如,我们有一个.mp4后缀的文件,我们知道是视频文件,所以电脑就应该以”视频“的形式打开,而不是文本的形式。此外,该根建中的内容与HKEY_LOCAL_MACHINE\Software\Classes中的内容相同
2.HKEY_CURRENT_USER
存储了有关当前登录用户的配置信息。例如,当前用户的键盘,鼠标,声音,显示等的配置信息。比较重要的子键如下:
Software:包含所有已安装软件的信息
Control Panel:用于保存某些Control Panel小应用程序的配置信息,例如附件,外观,鼠标,键盘等设置
3.HKEY_LOCAL_MACHINE
存放控制系统和软件的设置(针对所有登录到该系统的用户),比较重要的子键如下:
HARDWARE:包含系统当前使用的各种硬件信息
SAM:包含所有用户的自定义信息
SECURITY:包含安全设置信息,包括存入缓存的登录,策略,特殊支持账户等
SOFTWARE:包含所有组件和软件的信息,如各个软件被执行时的初始状态以及上次退出时的状态
SYSTEM:包括系统的定义,移动设备以及系统设置等配置信息
4.HKEY_USERS
包含了所有用户的配置文件,每个用户在这里都有独立的配置文件
5.HKEY_CURRENT_CONFIG
包含了系统在启动时需要的硬件的配置信息
使用代码调用windows的api去操作注册表
from winreg import *
def printNets():
net = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkList\\Signatures\\Unmanaged"
key = OpenKey(HKEY_LOCAL_MACHINE, net) #打开该目录,返回所有句柄
print('test:')
count = 0
while True:
try:
guid = EnumKey(key, count) #枚举每个句柄,返回该句柄的键
netKey = OpenKey(key, str(guid))
# 枚举打开注册表项的值,并返回一个元组,第一个参数为键,第二个参数为索引
(n, addr, t) = EnumValue(netKey, 5) #获取DefaultGatewayMac的数据,即获取该wifi的mac地址,返回为十六进制
(n, name, t) = EnumValue(netKey, 4) #获取FirstNetwork的数据,即获取wifi的名称
#判断是否有mac地址
if addr:
macAddr = val2addr(addr)
else:
macAddr = 'None'
netName = str(name)
print('[+]' + netName + ' ' + macAddr)
CloseKey(netKey) #获取一个句柄内容后,关闭句柄
count += 1
except OSError: #如果没有可迭代的内容就结束循环
break
#对句柄下的mac地址数据,以常见的形式返回
def val2addr(val):
addr = ""
#print(val.hex())
n = 0
for i in val.hex():
addr += '{}'.format(i)
n += 1
if n%2 == 0:
addr += ':'
return addr.rstrip(':') def main():
printNets() if __name__ == "__main__":
main()
上述代码作用:获取使用该电脑连接过的所有wifi的mac地址
解决调用系统api库权限不够报错问题:
报错问题:PermissionError: [WinError 5] 拒绝访问。
解决方法:如果使用pycharm执行脚本的话,在打开pycharm时使用管理员方式打开,如何操作?选中pycharm,单击右键就可以看到有”以管理的方式打开pycharm“
此外,你也可以通过dos命令窗口执行脚本,同样使用管理的方式打开dos命令窗口。
解决使用regedit命令找不到注册表问题:
被禁用了,按照如下方式来查看是否是被禁用了,以及如何修改。
1.按快捷键win+r,打开运行对话框。
2.输入gpedit.msc,然后点击确定,打开组策略管理。
3.在面板中找到用户配置下的管理模板,双击打开。在界面的右侧找到系统,双击打开。
4.在系统中找到阻止访问注册表编辑工具,双击打开。
5.弹出的编辑器中,我们选择未配置,这样就关闭了禁用,然后重试一下即可打开注册表。
6.点击确定即可完成设置。按快捷键win+r,看看是否已经解决了问题。如果打开了注册表,说明问题解决。
解决使用gpedit.msc命令打不开组策略管理问题
1.新建一个txt文件,把以下内容写到里面,然后关闭文件,修改文件名后缀为.cmd
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause
2.右键单击文件,以管理员身份运行,等待几秒就成功了。
3.验证成功,使用win+r,输入gpedit.msc确认后打开了组策略管理就说明成功
windows下显示文件名后缀:
打开任意一个文件夹,单击上方查看,勾选文件扩展名即可。

相关外链:
学习winreg库地址:winreg -Windows注册表访问权限 - Python 3.10 简体中文 - 多语言手册 - OULUB
Window注册表的学习记录的更多相关文章
- Windows注册表的学习
什么是注册表 注册表是Windows在Win95/98系统开始引入的一种核心数据库,里面存放着各类的配置信息.参数等.直接控制着系统的启动.硬件的装载以及Winodws程序的运行 手册表的功能 记录用 ...
- [原]win10拖拽贴靠功能注册表项调查记录
win10的拖拽贴靠功能被禁用了,偶然的机会,在设置中看到了相关的设置项,如下图 直觉告诉我一定是设置注册表中的某一项,于是决定调查下具体的注册表位置.请出procmon.exe,然后关闭贴靠功能,停 ...
- window注册表
打开注册表: 可以用快捷键 win + r ,然后输入 Regedit 回车,会打开注册表. 注册表添加一个键值对到 操作如下: 1.先创建一个 .reg 后缀的文件. 2.文件内容如下: Wind ...
- window注册表相关
参考: https://baike.baidu.com/item/REG_EXPAND_SZ/9102962 一 注册表的相关概念 windows注册表相关api中名字起的比较混乱, 在这放一张从网上 ...
- window 注册表上下文菜单如何配置?
注册表结构? Keys Abbreviation Description 描述 HKEY_CLASSES_ROOT HKCR Stores file association and COM objec ...
- [转]Windows系统注册表知识完全揭密
来源:http://www.jb51.net/article/3328.htm Windows注册表是帮助Windows控制硬件.软件.用户环境和Windows界面的一套数据文件,注册表包含在Wind ...
- 学习window系统下的注册表
一直不明白注册表是一个什么鬼,查了资料后大概明白了注册表到底有什么用,其实简单来说注册表就是一个存放系统.硬件.应用配置信息的数据ku.##### 一.注册表的来历在最早的视窗操作系统win3.x中, ...
- NSIS学习记录の----查找注册表某个键是否存在
最近要做一个注册表的判断.以往都是注册表某个键的键值存在查找,但是如何判断一个空键值的键是否存在呢(很多大厂装逼不写键值,有默认就好)? 下面给出解决办法(要沟通请邮件联系:7-7-2-7-0-6-5 ...
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
随机推荐
- this硬绑定
一.this显示绑定 this显示绑定,顾名思义,它有别于this的隐式绑定,而隐式绑定必须要求一个对象内部包含一个指向某个函数的属性(或者某个对象或者上下文包含一个函数调用位置),并通过这个属性间接 ...
- Oracle安装和卸载
Oracle安装: 1. 检查是否安装net framework 3.5 2. 安装win64_11gR2_database服务端 更改安装目录,设置密码 2. 检查服务 services.msc,两 ...
- mongodb基础整理篇————副本概念篇[外篇]
前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...
- C语言常见的八大排序(详解)
冒泡排序 优点:写起来简单 缺点:运算量过大每两个之间就要比较一次 冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上 如下 ...
- DevOps|高效能敏捷交付组织:特性团队(FeatureTeam)+Scrum
这是<研发效能组织能力建设>的第三篇.特性团队和Scrum,这两个定义我们在之前的文章中都详细介绍了.这两个组织模式或者说管理实践,我都用过所以有些时候特别有感触.书本上纯粹的模式很容易理 ...
- 4.pytest结合allure-pytest插件生成allure测试报告
之前我们使用的测试报告插件是pytest-html 这次使用的插件是allure-pytest,更加美观强大 安装插件 pip3 install allure-pytest 安装allure(Mac) ...
- 2.CBV和类视图as_view源码解析
一.FBV和CBV # 视图基于函数开发 FBV: function.base.views # 视图基于类开发 CBV: class .base .views #Python是一个面向对象的编程语言, ...
- html和php里引用文件
html里引入css文件: <link href="base.css" rel="stylesheet" type="text/css" ...
- 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]
前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ...
- Codeforces Global Round 23 D.Paths on the Tree(记忆化搜索)
https://codeforces.ml/contest/1746/problem/D 题目大意:一棵n节点有根树,根节点为1,分别有两个数组 s[i] 顶点 i 的魅力值 c[i] 覆盖顶点 i ...