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结尾的字符串
import winreg
def read_registry_subkeys(hive, subkey):
try:
# 打开注册表项
key = winreg.OpenKey(hive, subkey, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY)
# 枚举子项
subkeys = []
index = 0
while True:
try:
subkey_name = winreg.EnumKey(key, index)
subkeys.append(subkey_name)
index += 1
except OSError:
break
# 关闭注册表项
winreg.CloseKey(key)
return subkeys
except 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 = 0
while True:
try:
value_name, value_data, value_type = winreg.EnumValue(key, index)
values[value_name] = (value_data, value_type)
index += 1
except OSError:
break
# 关闭注册表项
winreg.CloseKey(key)
return values
except 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"SOFTWAREMicrosoftWindowsCurrentVersionUninstall"
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 winreg
def 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"SOFTWARECET"
name = "PecCore " #ExampleValue
value = "NewValue"
value_type = winreg.REG_SZ
set_registry_value(hive, subkey, name, value, value_type)
import winreg
def 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"SoftwareCETPecCore" # 替换为你的注册表路径
# 设置或修改键值
value_name = "Version"
value_data = "1.0"
Edit_Reg(key_path,value_name,value_data)
删除键值对
import winreg
def 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"SOFTWARECETPecStar_4.0"
name = "Version"
删除目录
import winreg
def 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"SOFTWARECETPecStar_4.0"
delete_registry_value(hive, subkey)
原文地址:https://blog.csdn.net/qq_43496409/article/details/134666953
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_5539.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。