Python实现对Windows注册表的增删改查

首先我们需要安装winreg库

pip install winreg

注册表常量

”winreg“总有很多有用的方法,基本上就是操作注册表中的键值,我们挑几个重要的来说说。首先我们来了解下”winreg“中的各个常量:

1.HKEY_ 常量
winreg.HKEY_CLASSES_ROOT     #存储应用和shell的信息
winreg.HKEY_CURRENT_USER     #当前用户自定义的信息
winreg.HKEY_LOCAL_MACHINE    #计算机系统所有的信息
winreg.HKEY_USERS            #所有用户信息
winreg.HKEY_PERFORMANCE_DATA #性能数据
winreg.HKEY_CURRENT_CONFIG   #本地计算机系统的硬件配置文件
winreg.HKEY_DYN_DATA         #windows98后的版本无法使用
2.访问权限
winreg.KEY_ALL_ACCESS           #所有权限
winreg.KEY_WRITE                #可写
winreg.KEY_READ                 #可读
winreg.KEY_EXECUTE              #可执行相当于KEY_READ
winreg.KEY_QUERY_VALUE          #查询注册表键值
winreg.KEY_SET_VALUE            #创建、删除或设置一组注册表值
winreg.KEY_CREATE_SUB_KEY       #创建一个注册表子项的注册表键
winreg.KEY_ENUMERATE_SUB_KEYS   #枚举注册表子项所需的注册表键
winreg.KEY_NOTIFY               #修改注册表键时的提示
winreg.KEY_CREATE_LINK          #创建一个链接,预留给系统用
3.64位的具体应用
winreg.KEY_WOW64_64KEY  #在64位Windows应用程序应该运行在64位注册表视图
winreg.KEY_WOW64_32KEY  #在64位Windows应用程序应该运行在32位注册表视图
4.值类型
winreg.REG_BINARY                  #任何形式的二进制数据
winreg.REG_DWORD                   #32位的数
winreg.REG_DWORD_LITTLE_ENDIAN     #32位的数字在低位优先的格式,相当于REG_DWORD
winreg.REG_DWORD_BIG_ENDIAN        #32位的数字在高位优先的格式
winreg.REG_EXPAND_SZ               #以null结尾的字符串包含环境变量的引用(% %)
winreg.REG_LINK                    #Unicode符号链接
winreg.REG_MULTI_SZ                #一个以null结尾的字符串序列,由两个空字符结束
winreg.REG_NONE                    #没有定义的值类型
winreg.REG_QWORD                   #64位的数
winreg.REG_QWORD_LITTLE_ENDIAN         #在低位优先一个64位的数字格式,相当于REG_QWORD
winreg.REG_RESOURCE_LIST               #设备驱动器资源列表
winreg.REG_FULL_RESOURCE_DESCRIPTOR    #硬件设置
winreg.REG_RESOURCE_REQUIREMENTS_LIST  #硬件资源列表
winreg.REG_SZ                          #一个以null结尾的字符串

使用Python读取注册表一个目录下的所有键值对

import winregdef read_registry_subkeys(hive, subkey):try:# 打开注册表项key = winreg.OpenKey(hive, subkey, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY)# 枚举子项subkeys = []index = 0while True:try:subkey_name = winreg.EnumKey(key, index)subkeys.append(subkey_name)index += 1except OSError:break# 关闭注册表项winreg.CloseKey(key)return subkeysexcept FileNotFoundError:print(f"Registry key not found: {subkey}")except Exception as e:print(f"Error reading registry subkeys: {e}")def read_registry_values(hive, subkey):try:# 打开注册表项key = winreg.OpenKey(hive, subkey, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY)# 枚举键值对values = {}index = 0while True:try:value_name, value_data, value_type = winreg.EnumValue(key, index)values[value_name] = (value_data, value_type)index += 1except OSError:break# 关闭注册表项winreg.CloseKey(key)return valuesexcept FileNotFoundError:print(f"Registry key not found: {subkey}")except Exception as e:print(f"Error reading registry values: {e}")# 示例
hive = winreg.HKEY_LOCAL_MACHINE
subkey = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"subkeys = read_registry_subkeys(hive, subkey)
print(f"Subkeys under {subkey}: {subkeys}")for subkey_name in subkeys:full_subkey = f"{subkey}\\{subkey_name}"values = read_registry_values(hive, full_subkey)print(f"Values under {full_subkey}: {values}")

设置已存在注册表项的键值对

import winregdef set_registry_value(hive, subkey, name, value, value_type):try:# 打开注册表项key = winreg.OpenKey(hive, subkey, 0, winreg.KEY_SET_VALUE | winreg.KEY_WOW64_64KEY)# 设置键值对winreg.SetValueEx(key, name, 0, value_type, value)# 关闭注册表项winreg.CloseKey(key)print(f"Registry value {name} set successfully.")except FileNotFoundError:print(f"Registry key not found: {subkey}")except Exception as e:print(f"Error setting registry value: {e}")# # 示例
hive = winreg.HKEY_LOCAL_MACHINE
subkey = r"SOFTWARE\CET"
name = "PecCore " #ExampleValue
value = "NewValue"
value_type = winreg.REG_SZset_registry_value(hive, subkey, name, value, value_type)

创建注册表项以及键值对

import winregdef Edit_Reg(key_path,value_name,value_data):# 创建或打开注册表项key = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, key_path)winreg.SetValueEx(key, value_name, 0, winreg.REG_SZ, value_data)# 关闭注册表项winreg.CloseKey(key)key_path = r"Software\CET\PecCore"  # 替换为你的注册表路径
# 设置或修改键值
value_name = "Version"
value_data = "1.0"
Edit_Reg(key_path,value_name,value_data)

删除键值对

import winregdef delete_registry_value(hive, subkey, name):try:# 打开注册表项key = winreg.CreateKey(hive, subkey, 0, winreg.KEY_SET_VALUE | winreg.KEY_WOW64_64KEY)# 检查值是否存在try:winreg.QueryValueEx(key, name)except FileNotFoundError:print(f"Registry value {name} not found.")return# 删除键值对winreg.DeleteValue(key, name)# 关闭注册表项winreg.CloseKey(key)print(f"Registry value {name} deleted successfully.")except FileNotFoundError:print(f"Registry key not found: {subkey}")except Exception as e:print(f"Error deleting registry value: {e}")# 示例
hive = winreg.HKEY_LOCAL_MACHINE
subkey = r"SOFTWARE\CET\PecStar_4.0"
name = "Version"

删除目录

import winregdef delete_registry_value(hive, subkey):try:# 打开注册表项key = winreg.OpenKey(hive, subkey, 0, winreg.KEY_SET_VALUE | winreg.KEY_WOW64_64KEY)# 删除注册表项winreg.DeleteKey(hive, subkey)# 关闭注册表项winreg.CloseKey(key)print(f"Registry value deleted successfully.")except FileNotFoundError:print(f"Registry key not found: {subkey}")except Exception as e:print(f"Error deleting registry value: {e}")# 示例
hive = winreg.HKEY_LOCAL_MACHINE
subkey = r"SOFTWARE\CET\PecStar_4.0"
delete_registry_value(hive, subkey)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五要素超声波气象站-气象站小百科

随着科技的发展,人们对气象监测的需求也越来越高。为了满足这一需求,一款全新的五要素超声波气象站应运而生。这款气象站不仅具有高精度的测量能力,而且能够实时监测天气变化,为人们提供准确的气象数据。 一、实时监测&#xff0…

34、故事大全API接口,免费好用

1、前言 故事大全查询API接口,这个是RollToolsApi通用系列接口的其中一个,内部包含了3个小接口,可获取睡前故事,儿童故事,格林童话,安徒生童话,民间故事,益智故事,历史故…

python循环语句和函数

1.使用for循环打印9*9乘法表 for i in range(1, 10):for j in range(1, i1):print(i, "*", j, "", i*j, end"\t")print()结果&#xff1a; 2.使用while循环打印9*9乘法表 i 1 while i < 10:j 1while j < i1:print(i, "*", j…

SSD-Single Shot Detector

文章目录 SSD模型主要改进点模型说明训练Choosing scales and aspect ratios for default boxesMatching strategyTraining objectiveHard negative miningData augmentation实验结果基本网络参数PASCAL VOC2007模型消融实验PASCAL VOC2012COCO推理速度比较前面提到了两种经典的…

moment.js的使用

更多可参见官方文档&#xff1a;Moment.js 中文网 | 开发文档

Java常见的面试题(很基础那种)

这里介绍一下,一些比较基础的Java面试题,比较适合应届生、实习生这些朋友。因为对于刚出来工作的Java工程师,很多企业都偏向招一些基础比较好的苗子回来培养。所以啊,在校的朋友们,一定要在读书期间,多做项目,如果没有实际的项目,可以在github找一些案例来做参考,先模…

koa2项目中封装log4js日志输出

1.日志输出到控制台 npm i log4js -D 封装log4js文件&#xff1a; const log4js require("log4js"); const logger log4js.getLogger();const levels {trace: log4js.levels.TRACE,debug: log4js.levels.DEBUG,info: log4js.levels.INFO,warn: log4js.levels.WAR…

分享83个简历竞聘PPT,总有一款适合您

分享83个简历竞聘PPT&#xff0c;总有一款适合您 83个简历竞聘PPT下载链接&#xff1a;https://pan.baidu.com/s/1iybRAisgWgXhelE1tGpzBw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整…

awk笔记231129

awk的脚本套路是: awk的脚步部分最好用一对单引号将 ‘BEGIN{} /pattern1/{}…/patternN/{} END{}’ 套起来, 因为常用到$号, $号在单引号中不会被转义, 在双引号中有取值的含义 awk -F 自定义分隔符 BEGIN{开始块} /pattern1/{操作pattern1过滤的行的块} /pattern2/{操作patt…

国标GB28181协议/RTSP视频监控汇聚平台EasyCVR(V.3.4)页面UI大更新

为提高用户体验&#xff0c;增强平台功能&#xff0c;旭帆科技的Easy系列平台也在不断优化更新中。在最新的EasyCVR&#xff08;V.3.4&#xff09;中&#xff0c;其最显著的区别即为首页UI的调整。 其亮点是在【配置中心】-【基础配置】-【展示信息】中&#xff0c;首页UI可分…

只有stm32基础,学嵌入式linux得几年?

只有stm32基础&#xff0c;学嵌入式linux得几年&#xff1f; 你这几句话基本把好几个方向都说了个遍&#xff0c;但是实际你没有这么多精力 这里32的基础意义不大&#xff0c;主要是C语言基础和之前项目中的经验&#xff0c;要是这俩个都不错&#xff0c;你可以直接上手 linux&…

MySQL 插入数据报错 Incorrect string value

当在sys_dict_data表中执行插入语句&#xff1b; insert into sys_dict_data values(1, 1, 男, 0, sys_user_sex, , , Y, 0, admin, sysdate(), , null, 性别男);报错信息如下&#xff1a; insert into sys_dict_data values(1, 1, 男, …

yum方式安装Mariadb多主集群安装和配置-centos9stream-mariadb10.5.16(实战建议配置)

mariadb是mysql的另外一个选择了&#xff0c;具体就不再介绍&#xff0c;这里主要介绍主主集群的配置方式&#xff0c;大家要注意&#xff0c;尽管为主主集群&#xff0c;在数据写入时&#xff0c;尤其是在连接rabbitmq时&#xff0c;写入操作建议还是从指定单点写入&#xff0…

系统内存莫名升高,排查过程

1.跟进生产服务器内存无故增长的问题&#xff08;目前已通知操作系统提供方进行排查&#xff09;&#xff0c;记录排查过程。 11月27日上午10点50分中心客户反馈&#xff0c;政通雄安app中的租赁入口进入之后显示空白&#xff0c;开始着手排查&#xff0c;一下是排查步骤&…

ABAP2XLSX 的安装和demo

ABAP2XLSX 是一个git上面的很好用的工具&#xff0c;它可以帮助abaper们更方便&#xff0c;更简单的生成各种各样复杂的自定义的excel&#xff0c;以满足各企业的信息化建设 在安装这个之前&#xff0c;请先查看之前的博客&#xff0c;去安装abapgit abap2xlsx地址&#xff1…

源 “MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

源 “MySQL 8.0 Community Server“ 的 GPG 密钥已安装&#xff0c;但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。yum install mysql-server --nogpgcheck

音频修复和增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件&#xff0c;主要特点包括&#xff1a; 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限…

爬虫http代理有什么用处?怎么高效使用HTTP代理?

在进行网络爬虫工作时&#xff0c;我们有时会遇到一些限制&#xff0c;比如访问频率限制、IP被封等问题。这时&#xff0c;使用HTTP代理可以有效地解决这些问题&#xff0c;提高爬虫的工作效率。本文将介绍爬虫HTTP代理的用处以及如何高效地使用HTTP代理。 一、爬虫HTTP代理的用…

适用于 Windows 和 Mac 电脑的最佳数据恢复软件

当我们的电脑上的文件被错误删除时&#xff0c;总是很难恢复该文件&#xff0c;或者除非您进行了系统还原&#xff0c;否则一切都会恢复到删除恢复的文件或文件夹之前的状态。 拥有合适的 PC 软件始终可以帮助您改善 PC 用户的体验&#xff0c;而适用于 Windows 10 和 11 的良…

【滑动窗口】长度最小的数组

长度最小的数组 长度最小的数组 文章目录 长度最小的数组题目描述解法暴力解法滑动窗口Java示例代码c示例代码 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, num…