我试图使用wmi.Registry.EnumKey()查找特定注册表项下的所有子项。但它继续抛出类型不匹配错误。我使用了下面的代码片段:
import _winreg
import wmi
r = wmi.Registry ()
result, names = r.EnumKey (hDefKey=_winreg.HKEY_LOCAL_MACHINE,sSubKeyName=r"Software\Microsoft\Windows\CurrentVersion\Uninstall")
观察到错误:
追踪(最近一次呼叫最后一次):
文件"",第1行,在模块
中 文件" build \ bdist.win-amd64 \ egg \ wmi.py",第431行,调用handle_com_error()
文件"构建\ bdist.win-amd64 \ egg \ wmi.py",第241行,在handle_com_error中
提高klass(com_error = err)
wmi.x_wmi:x_wmi:意外的COM错误(-2147352567,'异常 发生了。',(0,你' SWbemProperty',你'类型不匹配',无,0, -2147217403),无)
任何帮助都会很棒。
答案 0 :(得分:1)
您使用的是64位python解释器吗?我有一个相同的问题,事实证明它不像_winreg值,所以只需使用Windows注册表配置单元hides常量覆盖它们,如winreg.h;你可以在下面找到一份副本: http://www.math.uiuc.edu/~gfrancis/illimath/windows/aszgard_mini/bin/MinGW/include/winreg.h
import wmi
HKLM = 0x80000002
r = wmi.Registry()
result, names = r.EnumKey (hDefKey=HKLM,sSubKeyName=r"Software\Microsoft\Windows\CurrentVersion\Uninstall")