- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Python 中使用 WinReg,但遇到了障碍。下面的代码应该返回一个字典,每个返回的条目都有一个键:值,我发现自己得到了相同的键:值。
如何编辑此代码以获得一个或多个不同的值?
import _winreg
def subkeys(key):
i = 0
while True:
try:
subkey = _winreg.EnumKey(key, i)
yield subkey
i+=1
except WindowsError as e:
break
def traverse_registry_tree(hkey, keypath, tabs=0):
reg_dict = {}
key = _winreg.OpenKey(hkey, keypath, 0, _winreg.KEY_READ)
for subkeyname in subkeys(key):
reg_dict[subkeyname] = subkeyname
return reg_dict
keypath = r"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
print traverse_registry_tree(_winreg.HKEY_LOCAL_MACHINE, keypath)
输出与此类似:
{'Mozilla Firefox 40.0.2 (x86 en-US)': 'Mozilla Firefox 40.0.2 (x86 en-US)', 'IE40': 'IE40', 'Connection Manager': 'Connection Manager'}
任何帮助将不胜感激,请记住我无论如何都不是高级Python专家。
最佳答案
每次递归到 traverse_registry_tree
函数时,都会创建一个新字典。因此,每本字典中都只有一个键。
您可以看出这是错误的,因为在递归调用中您没有对返回值执行任何操作:外部调用打印返回值,但内部调用则不会。
您可以通过将递归调用的返回值打包回您正在创建的字典中来解决此问题。但这并不像将整个字典传入和传出递归调用那么有效:
def traverse_registry_tree(hkey, keypath, reg_dict):
key = _winreg.OpenKey(hkey, keypath, 0, _winreg.KEY_READ)
reg_dict[keypath] = key
for subkey in subkeys(key):
subkeypath = "%s\\%s" % (keypath, subkey)
traverse_registry_tree(hkey, subkeypath, reg_dict)
reg_dict = {}
keypath = r"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
traverse_registry_tree(_winreg.HKEY_LOCAL_MACHINE, keypath, reg_dict)
print(reg_dict)
不确定您是否还询问如何访问注册表值(以及 key )?如果是这样,这里也有一些代码可以做到这一点:
def get_values(key):
key_dict = {}
i = 0
while True:
try:
subvalue = _winreg.EnumValue(key, i)
except WindowsError as e:
break
key_dict[subvalue[0]] = subvalue[1:]
i+=1
return key_dict
def traverse_registry_tree(hkey, keypath, reg_dict):
key = _winreg.OpenKey(hkey, keypath, 0, _winreg.KEY_READ)
reg_dict[keypath] = get_values(key)
for subkey in subkeys(key):
subkeypath = "%s\\%s" % (keypath, subkey)
traverse_registry_tree(hkey, subkeypath, reg_dict)
关于Python - Winreg 获取键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171448/
我正在尝试在 Python 中使用 WinReg,但遇到了障碍。下面的代码应该返回一个字典,每个返回的条目都有一个键:值,我发现自己得到了相同的键:值。 如何编辑此代码以获得一个或多个不同的值? im
这是我的代码: import winreg as wreg key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet
我能够使用以下代码从我的 Windows 7 机器注册表配置单元“HKEY_LOCAL_MACHINE”中成功检索 5 个子键。 from _winreg import * try: i =
我有这个代码 from winreg import * aReg=ConnectRegistry(None, HKEY_CURRENT_USER) aKey=OpenKey(aReg, 'Softwa
我需要一些帮助来将换行写入注册表值。该值的类型为 REG_SZ。 我可以手动执行此操作,方法是在修改注册表中的十六进制值时向每个中断位置添加“0A”,但我不确定如何以编程方式执行此操作。 这是我当前将
我正在尝试从亚马逊 EC2 大型实例运行 python 应用程序。然而,它在 scipy 中提示,因为它找不到一个叫做 _winreg 的东西。 我不知道如何重新配置它,所以它不再是一个问题。 $
我有一个循环遍历包含找到的注册表项路径的列表的函数。我现在需要从该注册表项列表中找到每个注册表项的最后更改日期。 def get_values(subkeylist): try: x = 0
我在读取由我的软件创建的注册表项时遇到困难。但是,使用相同的代码,我能够读取其他键。 installdir = winreg.OpenKey(
尝试通过下面提供的路径将值写入 HKLM 配置单元。代码默默地完成,没有错误或异常,但是值保持不变。该脚本在管理员下执行,没有它就会按预期抛出 AccessDenied (5) Windows 错误。
我有一个应用程序通过 winreg.h 中公开的 API 收集 Perfmon 计数器值 - 为了收集 Perfmon 计数器值,我必须调用 RegQueryValueExW 并传入 Perfmon
我正在寻找一种使用 Java 写入 Windows 注册表的方法。 我去了https://github.com/twall/jna/blob/master/www/GettingStarted.md
这个问题与c++有关,有多种变体,但我正在尝试在C中使用注册表函数。我知道包括,那么为什么它没有看到RegGetValue()。它是C++独有的吗?有没有办法在C中使用它? 这是我发现的一些代码,我试
我编写了一个程序,通过注册表将目录添加到 PATH 变量,HKCU(用户)或 HKLM(系统)路径,具体取决于输入选项。 它在使用用户路径时工作正常。但是,在为系统设置路径时,Windows 的行为就
我正在尝试使用 winreg用于访问 Adobe 产品(Photoshop、After Effects 等)的注册表项的 Python 库,虽然我可以看到 HKEY_LOCAL_MACHINE注册
我插入了一个注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\test\test_qword类型 REG_QWORD和值20150509091344 (0x1253a7efba10)。
大家好! 我正在编写小型 python3 项目。在我的代码中,有一个函数可以检查用户是否安装了特定的 DirectX 版本。 该函数如下。 def check_directx(): try:
我是一名优秀的程序员,十分优秀!