フラッシュのハイブベースのレジストリ
-
01-10-2019 - |
質問
まず、投稿を読んだと言います ここ そして、私はまだ問題を抱えています。
再起動を通じて実際に結果を保存するHiveベースのレジストリを使用してCE6画像を作成しようとしています。
- カタログアイテムのハイブ設定にチェックマークを付けました。
- Common.REGでは、Hiveの場所([hkey_local_machine init bootvars] "systemhive")を「ハードドライブレジストリ」に設定しました(注:フラッシュは「ハードドライブ」と呼ばれるデバイスとして表示されます)
- Common.REGでは、「フラグ」= DWORD:3を同じ場所に設定して、デバイスマネージャーをストレージマネージャーと一緒にロードするようにします
- これらの設定が「;ハイブブートセクション」に包まれていることを確認しました
これが倒れ始めたところです。それはすべて正常にコンパイルされますが、ターゲットシステムでは、起動すると、次のようになります。
- レジストリが配置される「ハードディスク」と呼ばれるディレクトリ
- 永続的なフラッシュがある「ハードディスク2」と呼ばれる名前、デバイス
- レジストリに加えられた変更は再起動時に失われます
私はまだ何が欠けていますか?レジストリがフラッシュに保存されないのはなぜですか?
奇妙なことに、レジストリディレクトリにランダムファイル/ディレクトリを作成すると、再起動後もまだあります。したがって、このディレクトリは他のパーティションにない場合(私はそれを入れようとしました)、永続的であるように見えます。永続的な場合、レジストリ設定が保存されないのはなぜですか(つまり、イーサネットアダプターIPアドレス?)
私は特定のプロファイルを使用していないので、このハイブレジストリを恒久的なストアにするための最後のステップであることについて私は途方に暮れています。
解決
まず、私はあなたが一般的に変化していないことを願っています。 パブリックコードを変更しないでください. 。パブリックレジストリキーを変更したい場合は、プロジェクトまたはplatform.regでそれらを設定する必要があります。パブリック設定をオーバーライドします。
SystemHive
Hiveファイルを保存するディレクトリの名前に設定する必要があります デバイスの名前なし。あなたの場合:"SystemHive"="Registry\\system.hv"
からの引用 MSDNソース:
ファイルが保存されているファイルシステムの名前を含めないでください。システムは、他のレジストリ設定に基づいて使用するファイルシステムを決定します。
2番目のコメントに関する更新(ソース):
この値がhkey_local_machineの下に存在する場合、システムハイブが正常に復元されたことを示します。 hkey_current_userの下に存在する場合、ユーザーハイブが正常に復元されたことを示します。
あなたはあなたがした変更を洗い流していますか?
の奇妙な実装がないことを確認してください IOCTL_HAL_GET_HIVE_CLEAN_FLAG
(ソース) - あなたのシステムは、ブーツごとにシステムレジストリをクリーニングするために真の値を返している可能性があります。
レジストリを定期的にフラッシュするスレッドを追加できます(ただし、それを除外して、各アプリケーションに独自の変更をフラッシュさせることをお勧めします) - prj_enable_regflush_thread