
No.8ベストアンサー
- 回答日時:
Windowsは「起動時あるいはログオン時にレジストリデータの一時コピーを作成し、ログオフ時あるいはシャットダウン時に一時コピーの内容を書き戻す」といった処理を行いません。
レジストリデータの更新は、それがレジストリファイルに由来するものであれば、レジストリファイルの更新に直結します。回答No.2の「5秒間待ってからの書き出し処理」ではHDD上にあるレジストリファイルの内容が更新され、処理が完了するとレジストリファイルの内容は更新済みレジストリデータと一致するものになります。
またこの処理が途中で中断した場合、次回再起動時にレジストリデータは「書き出し処理の開始前の状態」か、あるいは「書き出し処理が完了した場合の状態」のいずれかに修復されます。どちらになるかは、どこまで書き出し処理が進んでいたかによって決まります。(前者をロールバック処理、後者をロールフォワード処理といい、データベースの一貫性を保証するための標準的な処理です。)
実際の処理内容の詳細は回答No.2に挙げた書籍に記載があり、amazon.comのサイト上で実際に読むこともできます。手順は以下のとおり。
1. http://www.amazon.com/gp/product/0735619174 を開く。
2. 書籍の内容を「stabke storage」で検索。
3. 検索結果から290ページ(「on Page 209」)を選択。
ここで表示される290ページの「Stable Storage」の見出し以下、次ページまでの1セクションがレジストリデータ更新時のファイル更新処理の内容です。
もちろん、記述に誤りがあって実は書き戻し用一時コピーを持っているという可能性もなくはありませんが・・・
No.9
- 回答日時:
半分は想像で投稿していましたので、解決への遠回りと混乱を招いていたら申し訳ございません。
そこで、私の投稿がいかなるものか、実践してみました。
簡単な方法ですが、レジストリエディタで「HKEY_CURRENT_USER」を書き換えた後、強制的に電源を切断してみました。
状況からすると自作アプリから書き換えて5秒以上経っていると思われますので、
こちらの試験でも5秒以上経ってから電源を切断しました。
起動して「HKEY_CURRENT_USER」の内容を確認したところ、正しく書き換えられていましたので、
私が思っていた「一時エリア」の展開と退避という処理はなさそうです。
ただ、レジストリエディタが、自作アプリと同様の動作をしているかどうかはわかりません。
結果、ANo.4でxcrOSgS2wYさんが言われたとおり「妙」としか言えなくなりました。
xcrOSgS2wYさんのおかげで私も勉強になりました。
ありがとうございます。
あと、私の勘違いと言うか、想像をたくましくさせたのには、理由がありました。
私のパソコンで必ずといっていいほど、終了時にイベントログがエラーを残しています。
----
イベント ソース: Userenv
ユーザー: NT AUTHORITY\SYSTEM
コンピュータ: xxxxxxxx(コンピュータ名)
説明:
ログオフ時にアプリケーションまたはサービスがレジストリをまだ使用している間に、Windows はユーザー xxxxxxxx(コンピュータ名)\yyyyyyyy(ユーザー名) のレジストリを保存しました。
ユーザーのレジストリによって使用されたメモリは解放されていません。
レジストリは使用されなくなったときにアンロードされます。
ユーザー アカウントとしてサービスを実行していることが原因と考えられます。
LocalService または NetworkService アカウントでサービスを構成してみてください。
----
これで、ログオフ時やWindows終了時に何かしらレジストリを操作しているのではないかと、思ったわけです。
しているのは確かだと思いますが、今回のようなことに関係するエリアではない可能性の方が高いですね。
No.7
- 回答日時:
ANo.5の補足です。
ANo.4のxcrOSgS2wYさんが書き込まれている最中に私も作文していたので気付きませんでした。
ANo.6でのフォローは、私の書き込みに対するものだと思いますので、ありがとうございます。
レジストリはキャッシュを介さないとの事ですが、私もそうは思いつつ投稿しました。
ハングアップした後の処理をどうされたかが不明だったので、
強制終了(電源を切ったかリセット)したものと判断したために投稿した次第です。
補足いたしますと、
キャッシュの有無にかかわらず、レジストリが保存されるのは一時的なエリアの書き込み時で、強制終了した場合は、完全なレジストリにはならないと思ったのです。
一時的なエリアと言うのは、「HKEY_CURRENT_USER」の事で、これは現在ログインしているユーザーの情報だと思います。
これとは別に、全ユーザーの情報(ログイン時に読み込まれ「HKEY_CURRENT_USER」化される)があり、そこに書き込まれるのはログオフ時だと思っていました。
レジストリへの書き込みが発生した場合にキャッシュを介していないとして、
「HKEY_CURRENT_USER」だけではなく、私が思っている全ユーザーの情報のエリアにも書き込まれていれば、
このような現象は起こらないと考えたのです。
前提として、
自作アプリが書き換えているのは「HKEY_CURRENT_USER」でるのと、
強制終了した、と言う状況下での話です。
No.5
- 回答日時:
これでできるかどうかわかりませんが、
時間的余裕があれば、一度試してみてください。
「デバイスマネージャ」で、
コンピュータのツリーの中にある「ディスクドライブ」から、
レジストリファイルのあるHDDを選択して、
プロパティを開きます。
「ポリシー」タブにある、
「ディスクの書き込みキャッシュを有効にする」のチェックをはずします。
そこにある注意書きや、「?」ボタンでのヘルプにあるように、
チェックが付いていると、すぐにはHDDに書き込まれず、
キャッシュに書き込まれるため、
万が一の時にはデータが壊れる可能性があります。
チェックをはずすと、キャッシュを使わなくなるので、
いくらかは安全になると思われます。
おそらくですが、DBの方は、このチェックにかかわらず、
そのシステムから、直に書き込んでいるか、
キャッシュをすぐにパスして書き込まれるようにかになっているのでしょう。
それで、不一致が発生するのかも知れません。
これで、書き込みの安全性は上がりますが、
書き込みのパフォーマンスは下がります。
どれくらい下がるのかを試されてみて、
かつ、安全なのかも確認された上で運用を考えてみてください。
レジストリに書き込まれるタイミングですが、
ユーザー情報とコンピュータ情報とあって、
常時書き込まれているのは一時的なエリアではないかと思われます。
ユーザー情報は、そのユーザーがログオフした時、
コンピュータ情報は、そのコンピュータが終了した時に、
本来のエリア、おそらく起動時に読み込まれるエリアへ、
書き戻しているではないかと思われます。
いずれにしても、正常終了しない限り、レジストリの内容は保障されないことになります。
No.4
- 回答日時:
それは妙ですね。
レジストリデータのHDDへの書き込みはバッファを介さないので、5秒より古いデータが残っていることはないのですが。
むしろ、DBの値の更新トランザクションが完全に完了しないうちにハングアップしており、そのせいで再起動時にDBの内容がロールバックされて不整合を生じている可能性のほうが高いように思われます。
レジストリの値とDBの値が一致しないとき、どちらの値が戻ってしまっているのか、いちど両方ともタイムスタンプを入れて比較してみることをお勧めします。(書き込むデータに時刻を追加し、更新時に、更新時点の時刻も同時に書き込むという意味です。)
No.2
- 回答日時:
レジストリの値の書き換えが発生してから5秒間待ち、その間のレジストリの値の変更内容がまとめてHDDに書き出されます。
Windows Server 2003ではこの「5秒」という値をレジストリ設定で変更可能です。Windows XPではおそらく変更できません。
(Microsoft Windows Inteernals, Fourth Edition / Microsoft Pressより。)
この回答へのお礼
お礼日時:2005/10/09 09:33
回答ありがとうございます。
5秒後にかかれるのですか。
ただ、問題が起きた際には、レジストリを書き換え後
20時間してハングし、再起動したところ、
レジストリの値がもとに戻っていたのです。

No.1
- 回答日時:
シャットダウンまたは再起動をするときに「設定を保存しています」と出ますよね。
このときだと思います。レジストリではなく何らかの設定ファイルにでも書き出せば不整合は起きないのでは。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン Default Programs Editor のレジストリ読み込み先 1 2023/07/18 18:02
- ドライブ・ストレージ HDDの書き込み回数と寿命について 7 2022/06/04 11:55
- バックアップ 1月間隔でもバックアップをさせたい 良いソフトは? 1 2023/08/20 06:21
- Windows 10 デフラグが遅い 3 2023/01/13 00:35
- ドライブ・ストレージ HDDとSSDどちらがいいか 7 2023/07/27 19:58
- ドライブ・ストレージ デュプリケーターによるHDDコピーについて 1 2023/07/01 01:34
- Windows 8 カスペルスキー削除後の外付HDD不具合 3 2023/03/06 06:41
- その他(パソコン・周辺機器) NVIDIAのシェーダーキャッシュ 1 2022/05/30 22:36
- ドライブ・ストレージ ssdの換装 6 2023/02/01 17:57
- ノートパソコン Note Posocon の記録媒体の取替方についての質問です。今現在、SSD-500GB、memo 7 2023/07/31 00:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽天キャッシュでマクドナルド...
-
すべてのプログラムをRAMデ...
-
ARPをクリアする理由について
-
携帯ブラウザの「戻る」ボタン...
-
HDDで8MBキャッシュ搭載・・?8...
-
OptiPlex GX520のCPU交換
-
更新ボタンを押さないと最新の...
-
PCに知らない画像がいつの間に...
-
HPを閲覧するとページが(?)キ...
-
ccmcacheとは ccmcacheとは何か...
-
VIDEOタグでキャッシュさせない...
-
Shfd0039.dtaが開けません。
-
非キャッシュ領域へのキャッシ...
-
SSDでネット閲覧は高速化します...
-
HDDの「32b」や「16b」とは何...
-
×サインイン₍₎してください キ...
-
システムデータを少なくする方...
-
レジストリを書き換えるといつH...
-
データキャッシュ、命令キャッ...
-
サムネイルと実際の画像が一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
楽天キャッシュでマクドナルド...
-
ccmcacheとは ccmcacheとは何か...
-
PCに知らない画像がいつの間に...
-
SSDでネット閲覧は高速化します...
-
ARPをクリアする理由について
-
ASUS RAMCache IIIについて、Wi...
-
px.a8.netとは何ですか
-
SIMカードには何が入っているの...
-
更新前のホームページの内容を...
-
iPhone版Googleフォトのオフラ...
-
GoogleDriveを使用してwebペー...
-
Vistaのアイコンキャッシュの削...
-
サムネイルと実際の画像が一致...
-
エロ動画探索してたらロリ動画...
-
更新ボタンを押さないと最新の...
-
ネームサーバを調べる時に気づ...
-
iPhoneアプリ『box』について
-
長谷川理恵さんのHPが消えた
-
HDDの回転数とキャッシュ、どち...
-
コピーした画像をデスクトップ...
おすすめ情報