windows 获取不依赖于时间变化的单调递增时间

oknrviil  于 2022-11-18  发布在  Windows
关注(0)|答案(2)|浏览(180)

我有一个管理器应用程序,它可以为另一个已关闭的应用程序保持保留状态一段时间。管理器应用程序使用System.nanoTime()来计算保留时间,但现在我需要保存和恢复此管理器应用程序的状态(例如,保存和恢复保留会话并再次计算时间),因此System.nanoTime()不再适用:在JVM\PC重新启动之间总结System.nanoTime()以维护全局时间线不是一个好主意。因此,我切换到RuntimeMXBean,它的getUptime()方法用于此目的。但现在我有另一个麻烦:我的管理器应用程序关闭的时间,没有办法知道它关闭了多久。因此,如果我有,例如,保留60分钟,应用程序将保留60分钟,如果管理器应用程序是启动和运行。如果我关闭我的PC 10分钟,这10分钟将丢失,当我再次运行管理器应用程序,它将恢复其状态,并计数保留为60分钟。我正在寻找知道时间的方法,因为在过去的某个时间点,直到当前时间,不能通过更改系统或BIOS时钟进行修改。重要说明:管理器应用程序无法访问Web,因此无法使用NTP。有什么方法可以做到这一点吗?

kxxlusnw

kxxlusnw1#

您应该存储两个信息:1)系统时间(如果您无法连接到时间服务器,则为您的BIOS时间)和2)保留到期时间。
这样,检查预约是否过期的方法将获得当前时间,并将其与保存的时间和过期时间进行比较。

h9a6wy2h

h9a6wy2h2#

嗯,情况看起来不太好。考虑到你不允许连接到网络,或者安装访问外部可靠时间源的硬件,也许你能做的最好的事情就是依靠一些值得信任的人。

  • 设置BIOS用户密码和BIOS管理员密码。用户密码会在输入密码之前暂停 Boot 过程。管理员密码会阻止更改BIOS设置,除非知道密码。
  • 将计算机设置为仅允许系统管理员(root)设置时间。
  • 仅允许受信任的人员 Boot 计算机。让他们在启动时检查系统时间。
  • 如果可以,请使用既有锁又有“机箱打开”开关的机箱。

“机箱打开”开关连接到主板上的针脚。设置BIOS选项以使用“机箱打开”功能。当机箱打开时,主板会检测到它并记住它。当计算机启动时,会显示一个警报。可能需要密码来重置状态。
如果你用的是带锁的箱子,请找锁匠把锁换掉。很多箱子锁都用同一把钥匙,而且很容易弄到。它们也很容易被撬。

相关问题