from _winreg import *
"""print r"*** Reading from SOFTWARE\Microsoft\Windows\CurrentVersion\Run ***" """
aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
for i in range(1024):
try:
asubkey=EnumKey(aKey,i)
val=QueryValueEx(asubkey, "DisplayName")
print val
except EnvironmentError:
break
任何人都可以请更正错误...我只想在键的子键中显示“DisplayName”HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall这是我得到的错误..
Traceback (most recent call last):
File "C:/Python25/ReadRegistry", line 10, in <module>
val=QueryValueEx(asubkey, "DisplayName")
TypeError: The object is not a PyHKEY object
4 回答
Documentation表示
EnumKey
返回带有密钥名称的字符串 . 您必须使用_winreg.OpenKey
函数显式打开它 . 我修复了你的代码片段:请注意,并非每个键都具有“DisplayName”值 .
x64上的x86怎么样? Use 64-bit Specific Types
如果"Uninstall"中有超过1024个子键怎么办? Use _winreg.QueryInfoKey(key)
Python 2:
Python 3:
正如_winreg.QueryValueEx文档中所述,您需要传递已经打开的密钥 . EnumKey返回一个字符串,而不是一个打开的密钥 .
我简化了
_winreg
功能,用于查询给定注册表项的嵌套值 .例如,这是查询您询问的注册表项的直截了当:
产量
添加这些实用程序功能: