2012-02-16 8 views
8

私のソフトウェアを使ってWindowsレジストリを編集しています。これは、例えばShell(Kioskアプリ)に代わるものです。WIN7のハードリセットによるレジストリの変更の削除を防止しますか?

ハードリセットが発生した場合(リセットボタンまたは4秒の電源ボタン)、Win7ではすべてのレジストリの変更が失われています。

しかし、WinXPでは、ハードリセットを行っても、変更はまだ残っています。

Win7でレジストリを編集した後に特別な処理を行う必要がありますか、これは組み込みのWin7セキュリティ機能でさえ可能でしょうか?

私には、レジストリの変更はファイナライズされておらず、ソフトリセットが発生するまでメモリに保存されているようですが、これは本当ですか?もしそうなら、何とか保存を強制することができますか?

+1

64ビットWindows上で32ビットソフトウェアを実行していますか?おそらく、レジストリの仮想化が関与しているかもしれません。あなたがリセットするキーはどこにありますか? – ixe013

+0

@ ixe013さんの質問に加えて、レジストリが変更されたときに管理者アカウントでアプリが実行されていますか? –

+0

これは実際には当然のことでしたが、私は64ビットWin7で試しましたが、私は32ビットマシンで試しましたが、結果は同じです。また、私は管理者アカウントを使用しています。 – user990767

答えて

12

RegFlushKeyの機能が欲しいのですが。

RegFlushKey関数は、指定されたキーを含むハイブのすべてのデータがディスク上のレジストリストアに書き込まれた場合にのみ返されます。

RegFlushKey関数は、最後のレイジーフラッシュまたはシステム開始以降に変更されたハイブ内の他のキーのデータを書き出します。

+0

これは本当に私が望むように見えます。私はそれを使用する方法の例のためにGoogleにしようとしたが、何も実際に来なかった、あなたは私にそれを使用する方法の例を教えてくれますか? – user990767

+0

@ user990767:どのようにレジストリを編集していますか?あなたはWinApi関数を使用していますか(つまり、あなたは 'HKEY'を持っていますか?)、あるいは何かDelphiに組み込まれていますか? –

+8

ベン:+1。 @user、Delphiの 'TRegistry'を使用している場合は、キーを書く前に' TRegistry.LazyWrite'をfalseに設定してください。キーを閉じる前に 'RegFlushKey'を行います。 –

関連する問題