C# 如何在C中检查是否手动更改了时间#

C# 如何在C中检查是否手动更改了时间#,c#,winapi,C#,Winapi,我正在编写一个程序,根据当前时间在计算机上定期执行某些操作。但用户可能会手动更改windows时间,使我的程序混乱。 我的想法是在每次循环迭代中节省当前时间,并将其与上次节省的时间进行比较。所以我可以确定时间变化和变化量。但它也会犯错误。系统休眠(和睡眠)做同样的事情,所以我无法区分“手动改变时间”和“系统休眠”。 事实上,现在这个问题可以通过确定Hibernate(和Sleep)来解决。 您能帮我(确定休眠(和睡眠)或确定时间更改)吗?使用time web services检查应用程序启动的时

我正在编写一个程序,根据当前时间在计算机上定期执行某些操作。但用户可能会手动更改windows时间,使我的程序混乱。 我的想法是在每次循环迭代中节省当前时间,并将其与上次节省的时间进行比较。所以我可以确定时间变化和变化量。但它也会犯错误。系统休眠(和睡眠)做同样的事情,所以我无法区分“手动改变时间”和“系统休眠”。 事实上,现在这个问题可以通过确定Hibernate(和Sleep)来解决。
您能帮我(确定休眠(和睡眠)或确定时间更改)吗?

使用time web services检查应用程序启动的时间。 或者,您可以创建Windows服务,即使您的程序未启动,该服务也会检查时间变化。

您可以使用测量时间。秒表不依赖于系统时钟,因此不受其变化的影响


休眠、睡眠等可通过事件检测。

是,秒表测量经过的时间。但它并不测量系统处于睡眠(或休眠)状态的时间。所以像以前一样,我无法根据当前时间(睡眠时间影响当前时间但不影响秒表)执行工作,也无法区分睡眠(或休眠)和时间更改。关于
SystemEvents.PowerModeChanged
,我使用了它,但我的程序没有更改。我不知道为什么,但这个事件没有调用指定的函数。你能猜出原因吗?