はい。 Windows Event Logsを読んで、システム時刻の変更を調べることができます。たとえば、私はちょうど私のシステム時刻を数秒間微調整し、システムイベントログに次のように表示されます。
情報10/21/2011 11:16:26 AMカーネル全般1なし
システム時間が2011 - 10 - 21T16に変更されました:16:26.000000000Z 2011 - 10 - 21T16: 16:26.000000000Z。
use the Win32 API to get access to the event logsこれらのイベントを照会して、時間が実際に変更されたかどうかを確認できます。このソリューションの素晴らしい点は、組み込みで常に実行されていることです。カスタムサービスなどを介してイベントを監視する必要はありません。OSのデータを照会するだけです。
管理者権限を持つ人が設定やクリアログなどを行うことができるため、これはまだ防弾対策ではありませんしかし、あなたは間違いなくあなたのアプリを偽造するでしょう。システムイベントログは、通常のWindowsユーザーが考えるものではありません。
その特定のイベントのためのXML:(プライバシー&セキュリティのための匿名化)
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Kernel-General"
Guid="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" />
<EventID>1</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000010</Keywords>
<TimeCreated SystemTime="2011-10-21T16:16:26.001000000Z" />
<EventRecordID>138478</EventRecordID>
<Correlation />
<Execution ProcessID="40044" ThreadID="50016" />
<Channel>System</Channel>
<Computer>xxxxx.xxxxxxxxx.org</Computer>
<Security UserID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
</System>
<EventData>
<Data Name="NewTime">2011-10-21T16:16:26.000000000Z</Data>
<Data Name="OldTime">2011-10-21T16:16:26.000000000Z</Data>
</EventData>
</Event>
[Windowsでクロックを変更する人のためのAPIイベントはありますか?](http://stackoverflow.com/questions/756506/is-there-an-api-event-for-when-person-変更 - 時計 - オン - ウィンドウ) –
これを行う方法があれば、私は非常に、非常に驚くだろう。また、それは欺瞞ではありません(質問には "WM_TIMECHANGE"がないと明記されています)。 – Jon
私はそれが事実の後に変化を検出する方法があるかどうかを見つけるために探しているので、重複しているとは思わない。その他の質問は、発生したときに変更を検出することです。 –