2011-05-26 60 views
9

我想在我的C#应用​​程序运行时检测系统时间和日期的手动更改以及自动夏令时更改。检测Windows事件日志中的手动时间更改和夏令时事件

此外,我正在寻找一种方法来检测在用户启动应用程序时应用程序处于脱机状态期间发生的这些更改。

在这个页面http://support.microsoft.com/kb/815314有一个解释如何扫描事件日志,但我找不到一个将唯一识别一个事件作为时间变化事件。

回答

2

您可以使用SystemEventsClass在运行时响应时间更改事件。

至于事件日志,你可以尝试挖掘有关Windows安全日志中的事件ID 520的一些信息,this帖子有一些关于它的信息。

+0

谢谢! 但SystemEventsClass - TimeChanged仅在用户更改系统时钟上的时间时才会发生。有没有办法检测由于夏令时造成的自动时间更改? EventLogEntry类中的EventID不幸已过时(http://msdn.microsoft.com/zh-cn/library/system.diagnostics.eventlogentry.eventid.aspx) – Oren 2011-05-29 17:43:10

0

我认为更好的解决方案是在您的应用第一次启动时保存当前的日期/时间/时区/ dst设置。然后在每次后续应用重启时检查它们。结合SystemEvents类来捕捉运行时变化,这将比尝试解析事件日志条目 - 可以清除/清除更好。

+0

感谢Scott 我不确定如何找出手动更改时间或系统根据您的建议自动更改由于夏令时在应用程序脱机期间的时间。 – Oren 2011-05-29 17:51:38