C ++中是否有一个函数可以获取无法更改的时间戳? (独立于互联网)

时间:2019-07-08 12:56:46

标签: c++ c++11 c++14 c++17

我正在寻找可以在独立的C ++应用程序中实现的功能,以从用户的计算机收集无法通过修改系统时间进行更改的时间戳。目标是强制执行年度订阅。

应用程序必须能够在全球范围内运行(因此没有标准化的时区),并且必须能够跨平台运行(因此Windows,IOS,Android等),而这里的独特挑战来自于需要此功能,而不管用户是否在下载应用程序之前就连接到互联网。

最好使用C ++标准库中的功能。有谁知道仅在C ++中这是否可行,或者Windows,IOS,Android等库中是否有提供此功能的函数?

我的程序的用户受过良好的教育,并且在不使用该应用程序以延长其寿命时更改系统时间/关闭系统。

谢谢

1 个答案:

答案 0 :(得分:4)

C ++库或我所知的任何库都没有这样的工具。您实际上无法完全完成您想要的事情:如果用户关闭计算机并断开电池与实时时钟的连接,则无法告诉他们是否已关闭电源5次分钟或十年。

我能想到的最接近的是Posix“单调时钟”。至少可以确保它永远不会返回比以前返回的时间更早的时间(至少在没有中间引导的情况下)-但是没有什么可以阻止用户在VM中运行应用程序并在他们关闭虚拟机时停止时钟应用程序,只有在它们再次启动时才重新启动它。 (这意味着他们可以实际使用24 * 365小时来使用您的应用-可能会分散使用多年。)

实际上,如果您无法连接到外部真实信息,则没有什么可以阻止用户将VM重置为刚安装应用程序时的状态。

您将不得不告诉您的经理,这无法完成。