闽公网安备 35020302035485号


import winreg
def enumerate_registry_values(key, sub_key):
"""
枚举注册表键中的所有值
:param key_path: 注册表键路径
"""
# key 可以是一个打开的key,或者winreg预定义的值HKEY_* constants
try:
reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
except OSError:
print(f"can't open key {key}/{sub_key}")
return
values = []
index = 0
while True:
try:
# 枚举值
value_name, value_data, value_type = winreg.EnumValue(reg_key, index)
values.append((value_name, value_data, value_type))
index += 1
except OSError:
# 当没有更多值时跳出循环
break
winreg.CloseKey(key)
print(f"枚举值成功 - 路径: {key}{sub_key}, 值数量: {len(values)}")
for name, data, type_ in values:
print(f" 名称: {name}, 值: {data}, 类型: {type_}")
print("基于注册表查看用户环境变量")
# 查看用户定义的环境变量路径是:HKEY_CURRENT_USER\Environment
enumerate_registry_values(winreg.HKEY_CURRENT_USER,"Environment")
# 堆代码 duidaima.com
def get_children_key_names(key, sub_key):
"""
获取key的子节点的key
并且以数组返回
"""
# key 可以是一个打开的key,或者winreg预定义的值HKEY_* constants
reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
sub_key_names = []
index = 0
while True:
try:
# 枚举值
sub_key_name = winreg.EnumKey(reg_key, index)
sub_key_names.append(sub_key_name)
index += 1
except OSError:
# 当没有更多值时跳出循环
break
winreg.CloseKey(key)
return sub_key_names
print("基于注册表查看对文件夹右键菜单的操作")
# 遍历路径:\HKEY_CLASSES_ROOT\Directory\Background\shell,查看针对文件夹中空白处右键菜单的操作
sub_key_names=get_children_key_names(winreg.HKEY_CLASSES_ROOT,r"Directory\Background\shell")
for sub_key_name in sub_key_names:
# 菜单的操作在command的值中
enumerate_registry_values(winreg.HKEY_CLASSES_ROOT,r'Directory\Background\shell\\'+""+sub_key_name+r"\command")
输出如下: