执行wmi.Registry.EnumKey会出现类型不匹配错误

时间:2015-12-17 07:37:50

标签: python registry wmi

我试图使用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),无)

任何帮助都会很棒。

1 个答案:

答案 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")