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 在 ...
随机推荐
- Educational Codeforces Round 106 (Rated for Div. 2)
就ac了2题... A题一开始题意模模糊糊的似懂非懂,然后自己按样例推出了题意,简单题很容易ac了.还是自己的英语水平太菜了.... B题根据0和1的位置关系能看出来,因为0不能在1后面, 所以有00 ...
- 洛谷P2860 [USACO06JAN]Redundant Paths G (tarjan,边双缩点)
本题的大意就是加最少的边使得图成为边双. 多举例子,画图分析可得:最终答案就是叶子节点(度数为1的点)的个数加1在除以2. 那么我们的目的就转化为找叶子节点: 首先通过tarjan找到割边,再dfs将 ...
- selenium4-定位单个页面元素
在操作各项页面元素之前,先介绍下如何通过Python代码来找到这些元素.WebDriver提供了18种元素定位方法,共分为两类(定位当个元素.定位组元素),本节先举例详细介绍下selenium4-定位 ...
- How to get the return value of the setTimeout inner function in js All In One
How to get the return value of the setTimeout inner function in js All In One 在 js 中如何获取 setTimeout ...
- 齐博x1 APP要实现直播的关键两步
大家务必要注意,缺少这两步,你的APP将不能实现直播, 也即点击直播按钮无法启动直播推流
- goroutine调度
0.1.索引 https://blog.waterflow.link/articles/1662974432717 1.进程 一个进程包含可以由任何进程分配的公共资源.这些资源包括但不限于内存地址空间 ...
- 【JavaWeb】学习笔记——Ajax、Axios
Ajax Ajax 介绍 AJAX(Asynchronous JavaScript And XML):异步的JavaScript 和 XML AJAX 的作用: 与服务器进行数据交换:通过AJAX可以 ...
- SQL中的转义字符和通配符
一.通配符 如果想查找"_cs"结尾的的账户 select * from [user] where loginname like '%_cs'是不行的, _ 被认为是任意的字 ...
- Windows下自动云备份思源笔记到Gitee
前言 思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦. 条件允许的同学还是使用官方的同步,支持下作者. 所以,就在思考有没有白嫖的 ...
- CSS line-break属性与中文标点换行
关于标点符号把文字带着换行的问题解决方案 出现的问题 最近在弄一个介绍页面的时候遇到一个很巧的问题,在文本换行的时候刚好能够放下文字,但是标点符号把这个文字带着换行了 如下图所示: 如果的在上一行显示 ...