注册表的结构:

概述:注册表是一种树状结构,在很早之前是系统的其他配置信息存放的文件,通常以.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注册表的学习记录的更多相关文章

  1. Windows注册表的学习

    什么是注册表 注册表是Windows在Win95/98系统开始引入的一种核心数据库,里面存放着各类的配置信息.参数等.直接控制着系统的启动.硬件的装载以及Winodws程序的运行 手册表的功能 记录用 ...

  2. [原]win10拖拽贴靠功能注册表项调查记录

    win10的拖拽贴靠功能被禁用了,偶然的机会,在设置中看到了相关的设置项,如下图 直觉告诉我一定是设置注册表中的某一项,于是决定调查下具体的注册表位置.请出procmon.exe,然后关闭贴靠功能,停 ...

  3. window注册表

    打开注册表: 可以用快捷键 win + r  ,然后输入 Regedit 回车,会打开注册表. 注册表添加一个键值对到 操作如下: 1.先创建一个 .reg 后缀的文件. 2.文件内容如下: Wind ...

  4. window注册表相关

    参考: https://baike.baidu.com/item/REG_EXPAND_SZ/9102962 一 注册表的相关概念 windows注册表相关api中名字起的比较混乱, 在这放一张从网上 ...

  5. window 注册表上下文菜单如何配置?

    注册表结构? Keys Abbreviation Description 描述 HKEY_CLASSES_ROOT HKCR Stores file association and COM objec ...

  6. [转]Windows系统注册表知识完全揭密

    来源:http://www.jb51.net/article/3328.htm Windows注册表是帮助Windows控制硬件.软件.用户环境和Windows界面的一套数据文件,注册表包含在Wind ...

  7. 学习window系统下的注册表

    一直不明白注册表是一个什么鬼,查了资料后大概明白了注册表到底有什么用,其实简单来说注册表就是一个存放系统.硬件.应用配置信息的数据ku.##### 一.注册表的来历在最早的视窗操作系统win3.x中, ...

  8. NSIS学习记录の----查找注册表某个键是否存在

    最近要做一个注册表的判断.以往都是注册表某个键的键值存在查找,但是如何判断一个空键值的键是否存在呢(很多大厂装逼不写键值,有默认就好)? 下面给出解决办法(要沟通请邮件联系:7-7-2-7-0-6-5 ...

  9. Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...

随机推荐

  1. SQLServer配置开启TCP/IP连接

    一 先启用SQLServer的TCP/IP协议 1.1 打开SQLServer配置管理器 1.2 启用TCP/IP 二 设置SQLServer端口 2.1 双击TCP/IP,弹出属性设置框 2.2 将 ...

  2. value中放vue的参数

    <input type="text" v-model="userInfo.name"/>

  3. Spring笔记三

    Spring-03 1. AOP 1.1 概念 ​ AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.他是一种可以在不修改原来的核心代码的情况下给程序动态统一进 ...

  4. MySQL开发

    常用数据类型 整数:tinyint.int.bigint小数:decimal.字符串:char.varchar.text 增 insert into 表名(列名,列名)values(值,值): 删 d ...

  5. 基本的Dos命令 在控制台如何进入某一个文件或者进入不同的盘符

    基本的Dos命令 Windows+R 打开运行小窗口 cmd 进入 D: 切换盘符 dir 查看当前目录下的所有文件 cd 路径,进入某个文件 cd- 返回上一层 cls 清理屏幕 inconfig ...

  6. 齐博x1万能数据统计之fun函数

    使用 fun("count@info",'数据表名','用户uid') 可以统计指定任何数据表的记录条数 fun("count@info",'cms_conte ...

  7. .NET性能系列文章一:.NET7的性能改进

    这些方法在.NET7中变得更快 照片来自 CHUTTERSNAP 的 Unsplash 欢迎阅读.NET性能系列的第一章.这一系列的特点是对.NET世界中许多不同的主题进行研究.比较性能.正如标题所说 ...

  8. 43.Permission源码解析和自定义权限类

    drf的权限类位于permission模块   如何确定权限 认证.限流,权限决定是否应该接收请求或拒绝访问 权限检查在视图的最开始处执行,在继续执行其他代码前 权限检查通常会使用request.us ...

  9. 教你如何解决T+0的问题

    摘要:T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据. 本文分享自华为云社区<大数据解决方案:解决T+0问题>,作者: 小虚竹 . T+0问题 T+0查询是指实时数据查询 ...

  10. Java多线程(6):锁与AQS(下)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 之前说过,AQS(抽象队列同步器)是Java锁机制的底层实现.既然它这么优秀,是骡子是马,就拉出来溜溜吧. 首先用重入锁来实现简单的累加,就像这 ...