1

まず、ここの投稿を読みましたが、 まだ問題が発生しています。

再起動によって実際に結果を保存するハイブ ベースのレジストリを使用して、CE6 イメージを作成しようとしています。

  • カタログ アイテムのハイブ設定にチェックを入れました。
  • common.reg で、ハイブの場所 ([HKEY_LOCAL_MACHINE\init\BootVars] "SystemHive") を "Hard Drive\Registry" に設定しました (注: フラッシュは "Hard Drive" というデバイスとして表示されます)。
  • common.reg で、同じ場所に "Flags"=dword:3 を設定して、ストレージ マネージャーと共にデ​​バイス マネージャーをロードしました。
  • これらの設定が「; HIVE BOOT SECTION」でラップされていることを確認しました。

ここから倒れ始めます。すべて正常にコンパイルされますが、ターゲット システムで起動すると、次のようになります。

  • レジストリを置く「ハードディスク」と呼ばれるディレクトリ
  • 永久フラッシュが存在する「Hard Disk2」という名前のデバイス
  • レジストリに加えた変更は再起動時に失われます

私はまだ何が欠けていますか?レジストリがフラッシュに保存されないのはなぜですか?

奇妙なことに、レジストリ ディレクトリにランダムなファイル/ディレクトリを作成すると、再起動後もそこにあるため、このディレクトリが他のパーティション (私が配置しようとした場所) になくても、永続的なように見えます。 . 永続的である場合、レジストリ設定が保存されないのはなぜですか (つまり、イーサネット アダプタの IP アドレスですか?)

私は特定のプロファイルを使用していないので、このハイブ レジストリを永続的なストアにするための最後の手順について途方に暮れています。

4

1 に答える 1

0

まず、common.reg を直接変更しないことを願っています。公開コードは絶対に変更しないでください。公開レジストリ キーを変更する場合は、project.reg または platform.reg で設定する必要があり、公開設定を上書きします。

SystemHiveデバイスの名前を除いて、ハイブ ファイルを保存するディレクトリの名前に設定する必要があります。あなたの場合: MSDNソース"SystemHive"="Registry\\system.hv"
からの引用:

ファイルが格納されているファイル システムの名前を含めないでください。システムは、他のレジストリ設定に基づいて、使用するファイル システムを決定します。


2 番目のコメントに関する更新 ( source ):

この値が HKEY_LOCAL_MACHINE の下にある場合は、システム ハイブが正常に復元されたことを示します。HKEY_CURRENT_USER の下にある場合は、ユーザー ハイブが正常に復元されたことを示します。

行った変更をフラッシュしていますか? ( source
) の奇妙な実装がないことを確認してください。システムは、起動のたびにシステム レジストリを消去するために true 値を返している可能性があります。IOCTL_HAL_GET_HIVE_CLEAN_FLAG


レジストリを定期的にフラッシュするスレッドを追加できます (ただし、それを除外して、各アプリケーションが独自の変更をフラッシュできるようにすることをお勧めします) - PRJ_ENABLE_REGFLUSH_THREAD

于 2010-04-25T07:14:23.277 に答える