我正在尝试获取windows计算机上所有已安装的程序,因此我读取了注册表。你知道吗
但是不知何故,python读取32位程序两次(尽管我给了他另一个注册表项)
以下是截取的代码:
def get_programs(registry):
reg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
programList = []
key = OpenKey(reg, registry)
print(QueryInfoKey(key))
for i in range(0, QueryInfoKey(key)[0]):
programList.append(EnumKey(key, i))
CloseKey(key)
CloseKey(reg)
return programList
我这样称呼这个函数:
registry32bit = "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
registry64bit = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
programs32bit = get_programs(registry32bit)
programs64bit = get_programs(registry64bit)
为什么python会打开并读取同一个注册表(32位)两次,然后返回完全相同的列表?你知道吗
这似乎有效,并在下面的注释中使用@eryksun建议,只允许重定向发生,而不显式引用
Wow6432Node
注册表项。中心思想是在打开uninstall子键时指定KEY_WOW64_32KEY
或KEY_WOW64_64KEY
标志,然后让神奇的事情发生。你知道吗注意:我还对
get_programs()
函数中的代码进行了Pythonized。在我看来,这使它更简短,可读性更强。你知道吗非常感谢@eryksun提供的线索和许多实施策略建议。你知道吗
相关问题 更多 >
编程相关推荐