私はwindowsの内部を読んでいるのですがproductoptions / productpolicyキーが見つかりました
製品ポリシーキーの定数またはenumのドキュメントも見つかりませんでした
まず第一に、この情報は公開されていますか?各Windowsバージョンのキーを取得するために10台の仮想マシンを設定する必要がありますか、それとも誰かがその答えを知っていますか?
私はwindowsの内部を読んでいるのですがproductoptions / productpolicyキーが見つかりました
製品ポリシーキーの定数またはenumのドキュメントも見つかりませんでした
まず第一に、この情報は公開されていますか?各Windowsバージョンのキーを取得するために10台の仮想マシンを設定する必要がありますか、それとも誰かがその答えを知っていますか?
回答:
下記の記事では、キーに含まれるバイナリ値をリバースエンジニアリングしています。 HKLM\System\CurrentControlSet\ProductOptions
。
鍵を復号化するプログラム(ソースコード付き)も含まれています。
あなたがキーでレジストリを調べれば HKLM \ System \ CurrentControlSet \ ProductOptionsにいくつかあります。 ライセンス関連の値。
ProductTypeキーとProductSuiteキーには、OSスイートと Editionですが、ProductPolicyキーはもっとおもしろいです。それではましょう よく見てください
...
ご覧のとおり、ライセンス名はUnicode文字列として存在し、 後で、値をどのように読み取ることができるかを説明します。しかし私は 手動ですべての名前を抽出する必要はありませんでした。 見た目がよくなかったので、使用された構造を元に戻すことができます 複雑な
...
ヘッダーから始まります。
TProductPolicyHeader = packed record cbSize: DWORD; cbDataSize: DWORD; cbEndMarker: DWORD; Unknown1: DWORD; Unknown2: DWORD; end;
その後、値の配列が続きます。
TProductPolicyValue = packed record cbSize: Word; cbName: Word; SlDatatype: Word; cbData: Word; Unknown1: DWORD; Unknown2: DWORD; end;
SlDataTypeは、の値に対応するワード値です。 0SLDATATYPE列挙:
_tagSLDATATYPE = ( SL_DATA_NONE = REG_NONE, SL_DATA_SZ = REG_SZ, SL_DATA_DWORD = REG_DWORD, SL_DATA_BINARY = REG_BINARY, SL_DATA_MULTI_SZ = REG_MULTI_SZ, SL_DATA_SUM = 100 ); SLDATATYPE = _tagSLDATATYPE; TSlDataType = SLDATATYPE; PSlDataType = ^SLDATATYPE;
そして我々は(サイズcbEndMarkerの)エンドマーカーで終わります。