0
以下はレジストリハイブを読むための私のコードです。しかし、私は奇妙なことに出会った。場合によっては機能が動作することもあります(エラーコード2を返します)。レジストリキーを最初に表示するためにregeditを使用すると、regeditを閉じてからスクリプトをもう一度実行すると気付きました。誰もそのようなエラーに会う前に?win32api.RegOpenKeyExがエラーコード2で失敗することがありました。
以下は私の機能です。
def _getMusicRegistryValue(self, keyName):
value = ""
aKey = None
try:
HKLMKey = win32api.RegConnectRegistry(None, win32con.HKEY_LOCAL_MACHINE)
qqMusic = r"SOFTWARE\\Tencent\\QQMusic"
aKey = win32api.RegOpenKeyEx(HKLMKey, qqMusic)
#print 'aKey = ',aKey
(value,valueType) = win32api.RegQueryValueEx(aKey, keyName)
#installPath = "%sQQMusic.exe" %install
#print installPath
except Exception as data:
self.logger.error('*FAIL*: Exception happened when reading registry hive.Exception details: %s' %data)
errMsg = win32api.FormatMessage(data[0])
self.logger.error(errMsg)
#raise Exception("Read registry failed, QQMusic is not installed.")
finally:
if aKey is not None:
win32api.RegCloseKey(aKey)
#print 'close key'
if HKLMKey is not None:
win32api.RegCloseKey(HKLMKey)
return value
私はすべてのキーハンドラを閉じようとしましたが、まだ問題があります。
に見える必要がありますので、アプリケーションQQMusicはx64のマシンでのx86アプリケーションの場合は、コード内の可能なバグがありますが、あなたにマンデルありがとうございました。あなたが正しいです。私は誤ってregパスに\\を使用していましたが、これは\ – bettermanlu