pGina が作成するエントリのレジストリを読み取るために ActivePython 2.5 を使用しています。具体的には、コンピュータで許可されている GID に関するエントリです。この情報は、pGina を使用して編集すると、コンピューターごとに定期的に変更される可能性があるため、Python スクリプトでこれらの値を毎回確認できるようにしたいと考えています。
簡単です。次の Windows コマンドは、その情報を取得します。
reg query HKLM\Software\pGina\ldapauth\
...Python で実行した場合を除いて、次のようになります。
>>> import subprocess
>>> command = 'reg query HKLM\Software\pGina\ldapauth'
>>> ldapauth = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE).communicate()[0]
ERROR: The system was unable to find the specified registry key or value.
そのため、Python で 'reg query HKLM\Software' を実行すると、HKLM ではなくHK CU \Software の下にキーと値のリストが出力されます。
管理者として Python を実行しています (getpass.getuser() を使用して確認)。バッチ スクリプトから同じコマンドを実行すると、HKLM の下に正しいリストが表示されます。ただし、Python からバッチ スクリプトを呼び出すと、古い HKCU の結果に戻ります。
だから、私は少し立ち往生しています。誰にも洞察力がありますか?
編集: 後で詳しく説明するように、私は Windows 7 64 ビットを実行しており、OpenKey のオプションの 4 番目の「sam」引数を含む _winreg メソッドを試しました。