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
谁能纠正这个错误...我只想在键HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall的子键中显示"DisplayName“这是我得到的错误..
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
发布于 2011-03-08 09:46:26
Documentation说EnumKey
返回带有密钥名称的字符串。您必须使用_winreg.OpenKey
函数显式打开它。我已经修复了你的代码片段:
from _winreg import *
aKey = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
print(r"*** Reading from %s ***" % aKey)
aKey = OpenKey(aReg, aKey)
for i in range(1024):
try:
asubkey_name = EnumKey(aKey, i)
asubkey = OpenKey(aKey, asubkey_name)
val = QueryValueEx(asubkey, "DisplayName")
print(val)
except EnvironmentError:
break
请注意,并不是每个键都有"DisplayName“值。
发布于 2011-03-08 09:45:28
正如_winreg.QueryValueEx文档中所述,您需要传递一个已经打开的密钥。EnumKey返回一个字符串,而不是一个打开的键。
aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
for i in range(1024):
try:
keyname = EnumKey(aKey, i)
asubkey = OpenKey(aKey, keyname)
val = QueryValueEx(asubkey, "DisplayName")
print val
except WindowsError:
break
发布于 2019-09-24 03:40:46
创建了一个简单的程序来生成注册表中的子键列表。目前,正在尝试弄清楚如何在该列表中搜索特定的子项,然后在不存在的情况下添加它们,和/或更改值。(应该不会太难)这就是我想出来的。我希望它能有所帮助,也请随意批评它:
from winreg import *
registry = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
def openRegistryA():
rawKeyA = OpenKey(registry, "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System")
try:
i = 0
while 1:
name, value, type = EnumValue(rawKeyA, i)
print(name, value, i)
i += 1
except WindowsError:
print("END")
CloseKey(rawKeyA)
def openRegistryB():
rawKeyB = OpenKey(registry, "SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters")
try:
i = 0
while 1:
name, value, type = EnumValue(rawKeyB, i)
print(name, value, i)
i += 1
except WindowsError:
print("END")
CloseKey(rawKeyB)
openRegistryA()
openRegistryB()
https://stackoverflow.com/questions/5227107
复制相似问题