有没有办法以编程方式重置Windows的timeGetTime值(自Windows启动以来经过的时间)?

时间:2019-04-09 13:30:44

标签: c# windows winapi assembly

在Windows 7之后的所有发行版中,关闭和重新启动通常会执行快速启动,而不是“完全”关闭。

How to Perform a Full Shutdown in Windows 10

在Windows的Win32 API中,有一个名为timeGetTime()的函数,该函数返回一个DWORD,表示自Windows启动以来经过的时间。

此函数仅在完全关闭后才返回重置变量。

是否可以通过编程方式将此值重置为0?我专门在C#应用程序中尝试这样做,但是任何语言都可以接受,因为它可以转换为C#。

2 个答案:

答案 0 :(得分:1)

您要在此处完成哪些操作要求将计数器重置为0?

要回答您的问题,否。没有办法以编程方式将值重置为0。即使您通过编写某些hack驱动程序(由于时间计数器在Windows或其他操作系统下受保护的实体)来完成此操作,您也会看到一些不希望的副作用,并且很可能是将在Windows下立即引起看门狗计时器错误检查。每个操作系统都保证时间计数器只会向前移动,许多操作系统组件都将这一事实视为理所当然。

答案 1 :(得分:1)

考虑到您要解决此问题以解决FutureLegends中的Clock Overrun错误,可以使用Detours(或在使用C#时使用EasyHook)钩住timeGetTime()GetTickCount(),而不是这样做全球