問題タブ [winreg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - _winreg.QueryValueEx は「混合型」のバイナリ値を返します
Python 3.4 では、winreg.QueryValueEx()
テキスト ファイルと比較するために、レジストリからキー値を取得するために使用しています。REG_BINARY
キー値bytes
が unicode 値であるという問題が発生しました。
- 予想されるレジストリ キーの値 - 52 50 43 46 01 1b 00 00 00 ff fe ff 04 46 00 6c 00 61...
- 返されたキー値 - b' RPCF \x01\x1b\x00\x00\x00\xff\xfe\xff \x04F\x00l\x00a\x00t\x00\x00\n \x00\x8b...' (いくつかの問題のある値は太字)
- いくつかのデコード\エンコード オプションを試しましたが、型が混在しているためすべて失敗しました (例:
key_val.decode('utf-8')
returned{UnicodeDecodeError}'utf-8' codec can't decode byte 0xff in position 9: invalid start byte
)
16 進値のリストである戻り値を、予想される 16 進値を保持するテキスト ファイルに使用します。これらの太字の値は 16 進形式ではないため、想定されていません。具体的に処理するための回避策を事前にすべて知っているわけではありません。
Python 2.7 では問題ありませんでした。これは、Python 3 の分離str
やbytes
、Python 3 の winreg のバグに関係していると推測しています。
単一のタイプに統一するための支援とヒントをいただければ幸いです。ありがとう!
python-3.x - Windows上のPython 3のwinregでレジストリ値が一致しないのはなぜですか?
皆さんこんにちは!
小さなpython3プロジェクトをコーディングしています。私のコードには、ユーザーが特定の DirectX バージョンをインストールしているかどうかを確認する関数があります。
その機能は以下の通りです。
この機能をテストしたかったので、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectXの元のバージョン値 (4.09.00.0904) を 4.07.00.0904 に変更しました。しかし、うまくいきませんでした。変数 dx_value_str の値はまだ 4.09.00.0904 でした。
レジストリを検索したところ、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectXに同じキー、値があることがわかりました。ここのバージョン値を変更しました、変数 dx_value_str の値がついに変更されました。
ご覧のとおり、'SOFTWARE\Microsoft\DirectX' でキーを開きましたが、'SOFTWARE\Wow6432Node\Microsoft\DirectX' で値を取得しました。
この状況は大丈夫ですか?または私のコードに何か問題がありますか?
私を助けてください!
python - Windows エラーを取得する Windows ファイルパスのパスの空白: [エラー 2]
以下に示すエラーが表示されます。スペースのため、パスの問題のように見えます。
正しく「Windows」に立ち上がっています。