none
Windows時計とBIOS時計(RTC)の同期処理の変更について

    質問

  • はじめまして

    タイトルの件について質問させてください。

    (コミニティて質問していましたが、こちらのほうも進められましたので

    同様の内容ですが質問させていただきます)

    私が使用しているパソコン(詳細環境は後述)の時計が、あるとき1分間進む時があります。

    (3ヶ月に1回程度)

    色々と調べた結果、以下2つの情報を発見しました。

     ・文書番号: 232488

     ・文書番号: 946033

    これらの情報から(なんとなく)回避不可能との判断であり

    また、古いOSでの情報なのでWindows7に該当するか不明ですが

    今までの経験から、同じことが起っているのではないかと推測しています。

    そこで、この事象を「何らかの方法で回避できるか」について知りたいと思っています。

    少し特殊な環境なので以下に詳細を記載します。

    PC本体:国内メーカー製のノートPC(2013年に購入)

    OS:Wisndows7(バージョンは忘れました、あまり関係ないでしょうか)

    使用環境(条件)等

    ・完全ローカル(ネットワークアクセスなし)

    ・ntpサーバ(相当品)との接続および追加も不可能

    ・24時間365日稼動(壊れるまで停止させない)

    今、当方の知識で検討していることは

    ・スケジューラ(バッチ処理)で自分自身の時計を上書きする。

     (「net time」等を検討)

     手動での時刻補正と一緒でRTCも修正される(?)ので事象を回避できる?

    ・上記文書の処理を停止する(させる)⇒これができれば1番良いのですが・・・・

    事象が簡単に再現させ、検証できることではないため

    クリティカルで明確な所が知りたいと思っています。

    「すでに結論が出ているではないか」とのコメントはなしで

    様々な意見を頂きたく思いますので、よろしくお願いします。

                                             以上

    2014年2月3日 12:04

回答

すべての返信

  • チャブーンです。

    おっしゃる意味に分かりかねるところがありますが、ネットワークが切れていてもシステム時刻(Windowsの時間)とRTCを絶対に同期させたくない、というのであれば、(いつもは動いていない)Windows Timeサービスを常時起動させておけば、もしかしたらできるかもしれません。KB232488には「Windows 2000 ベースのコンピュータで Windows タイム サービスが実行されている場合、Windows の起動後に Windows のタイム デーモンを約 1 時間に 1 回実行することはできません」という記述があるためです。Windows 7でWindows Timeを常時起動するには注意が必要ですので、したの情報を必ず確認してください。

    http://support.microsoft.com/kb/2385818/ja

    もっとも、KB946033には「NTP サーバーに対するアクティブな接続が存在しない場合、システム時刻が BIOS クロックと同期され、時刻の差異が 60 秒を超えた場合に、システム時刻が BIOS クロックに合わせて自動的に修正されます。」とあるので、ネットワークがつながっていない状態でどんな動作をするかは、実際にお試しいただくしかないと思います。

    • 回答の候補に設定 佐伯玲 2014年2月4日 0:23
    2014年2月3日 18:29
  • 返信ありがとうございます。

    少し補足させてください。

    実用環境においてWindowsTimeサービスは起動していますが、KB946033にある通り「NTP サーバーに対するアクティブな接続」が存在しませんので「時刻の差異が 60 秒を超えた場合に、システム時刻が BIOS クロックに合わせて自動的に修正されます。」という動作をしているようです。(イベントビューアでもそれらしいログはあります)

    また、(WindowsTimeサービスの起動/停止状態に関わらず)KB232488に「Windows のタイム デーモンが約 1 時間に 1 回実行されます。タイム デーモンは Windows と RTC の時刻を比較します。この 2 つの時刻の差が 1 分以上の場合、Windows は RTC と一致するように時刻と日付を変更します。タイム デーモンの実行間隔を変更することはできません。」とあるので、結局のところ当方の環境だと「あるとき1分間進む」という事象が発生することになると思います。(ここは当方の推測でWindowsTimeサービスの停止時の実証データはありません)

    上記の事から、当初の質問をさせて頂きました。

    結局どうしたいかというと、WindowsのOS時計がなりゆきのままで推移し、何に対しても時計の補正処理を一切させたくない(させたくなかった)ということです。タイムデーモンは止められそうにないので、代案はないでしょうかという趣旨の質問でもあります。

    引き続き様々な回答をお待ちしています。 以上


    • 編集済み kedasan 2014年2月4日 14:43
    2014年2月4日 14:35
  • >WindowsのOS時計がなりゆきのままで推移し、何に対しても時計の補正処理を一切させたくない(させたくなかった)

    bTimeAdjustmentDisabled に True を指定して SetSystemTimeAdjustment を実行する事で、タイムデーモンの時刻調整されない動作になると思います。
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms724943(v=vs.85).aspx

    (ただ、時刻のずれを調整しない、悪いシステムになりますが。)

    • 回答としてマーク kedasan 2014年2月5日 11:57
    2014年2月5日 1:55
  • 返信ありがとうございます。

    教えていただいた関数を切り口に色々調べた結果、当方が期待する動作をさせることができそうです。実際にはこれからチャレンジとなりますが、がんばってみます。

    チャブーン様、中年やっちゅうねん様 御協力ありがとうございます。

    2014年2月5日 11:57