我有一个Delphi程序,在午夜运行时会出现错误行为。为了制作可重现的测试用例,我必须在午夜之前将系统的本地时间更改为某个时间,运行程序一段时间,检查错误并切换回来。虽然这肯定可以手动完成,但我有问题要自动进行测试。
是否有可能在不改变系统时间的情况下为应用程序提供特殊时间?这可以来自程序外部甚至内部。
虽然这可能是一般的Windows问题,但我用Delphi标记它,因为使用Delphi的任何解决方案都很好,而在这种情况下,其他一些编程环境也没用。
答案 0 :(得分:16)
有一个名为RunAsDate的现有工具:
<强>描述强>
RunAsDate是一个小实用程序,允许您在指定的日期和时间运行程序。此实用程序不会更改计算机的当前系统日期和时间,但只会将您指定的日期/时间注入所需的应用程序。 您可以同时运行多个应用程序,每个应用程序使用不同的日期和时间,而系统的实际日期/时间继续正常运行。
它是如何运作的?
RunAsDate拦截返回当前日期和时间的内核API调用(GetSystemTime,GetLocalTime,GetSystemTimeAsFileTime),并将当前日期/时间替换为您指定的日期/时间。
系统要求
RunAsDate适用于Windows 2000,Windows XP,Windows Server 2003,Windows Server 2008,Windows Vista,Windows 7和Windows 8.不支持旧版Windows。也是x64版本,可单独下载,用于x64应用程序。