【问题标题】:VB.NET Make program not affected by time changeVB.NET 使程序不受时间变化的影响
【发布时间】:2019-03-06 06:21:00
【问题描述】:

我一直在开发一个简单的程序来阻止我的兄弟从凌晨 12 点到凌晨 5 点玩电脑,因为他上瘾了,他要求这样做,但他很容易通过更改 windows 系统绕过我的系统时间,我一直想知道是否有一种有效的方法来保护软件的时间变化

【问题讨论】:

标签: vb.net visual-studio-2017


【解决方案1】:

这很有趣。这是一个方法。不是100%万无一失,但如果你的兄弟不知道如何绕过它就足够了:

  1. 让您的程序在内存中保存启动时间。
  2. 让您的程序启动它自己的时钟。
  3. 出于“实时”目的而忽略系统时间。

假设您的程序在 15:24:22 开始。它会记住那个确切的时刻,因为它是基线。同时,您启动了一个计时器:

Dim chron As Stopwatch = Stopwatch.StartNew()
chron.Start()

从此时起,您需要通过添加在chron 上经过的时间和您之前保存的基准时间来访问“现在”。为此,您应该有一个函数。

如果你的兄弟试图改变系统时间,chron和baseline都不会受到影响,所以他目前的绕过方法将不起作用。但是,他仍然可以更改系统时间,然后重新启动,并且在启动时程序会保存一个新的基线并被愚弄。不过,除非你告诉他,否则我怀疑他会走到这一步。

祝你好运,玩得开心!

【讨论】:

  • 他会,但我可以将数据保存在计算机上,这样就可以解决问题,我试试看,看看效果如何
  • 保存数据是个好主意,但 Andrzej Kaczor 关于使用网络服务的评论将确保您的时钟始终没有偏差(除非您的兄弟拔掉互联网,但他必须离线玩) .如果您对这个想法感到放心,那将是 IMO 的最佳解决方案。
  • 是的,我一直在寻找一个,我什至在 www.aragonloaders.ml/time 上制作了自己的非常简单的版本,但我无法正确获取数据
  • 如果你这样做会得到什么:Dim webClient As New System.Net.WebClient Dim result As String = webClient.DownloadString("www.aragonloaders.ml/time") ??有很多方法可以做到这一点,但我很懒,所以我可能会用正则表达式来解决这个问题。
  • 好的,这就是我使用的解决方案,我使用了从我的网络服务器获取时区的简单 api,这应该可以解决问题,我回家时使用的代码可以帮助其他可能需要的人解决方案
猜你喜欢
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2011-01-06
相关资源
最近更新 更多