VB.NET使程序不受时间变化的影响

VB.NET使程序不受时间变化的影响,vb.net,visual-studio-2017,Vb.net,Visual Studio 2017,我一直在开发一个简单的程序,阻止我弟弟从凌晨12点玩到凌晨5点,因为他上瘾了,他要求我这么做,但他很容易通过改变windows系统时间绕过我的系统,我一直在想,是否有一种有效的方法来保护时间变化的软件这很有趣。有个办法。这不是100%万无一失的,但如果你的兄弟不知道如何绕过它,这就足够了: 让您的程序在内存中保留启动时间 让你的程序启动它自己的时钟 出于“实时”目的,忽略系统时间 假设您的程序在15:24:22开始。它会记得那个时刻,因为它是基线。同时,您启动一个计时器: Dim chron A

我一直在开发一个简单的程序,阻止我弟弟从凌晨12点玩到凌晨5点,因为他上瘾了,他要求我这么做,但他很容易通过改变windows系统时间绕过我的系统,我一直在想,是否有一种有效的方法来保护时间变化的软件这很有趣。有个办法。这不是100%万无一失的,但如果你的兄弟不知道如何绕过它,这就足够了:

  • 让您的程序在内存中保留启动时间
  • 让你的程序启动它自己的时钟
  • 出于“实时”目的,忽略系统时间
  • 假设您的程序在15:24:22开始。它会记得那个时刻,因为它是基线。同时,您启动一个计时器:

    Dim chron As Stopwatch = Stopwatch.StartNew()
    chron.Start()
    
    从这一点开始,您需要通过添加
    chron
    上经过的时间和先前保存的基线时间来访问“Now”。您应该有一个用于此目的的函数

    如果您的兄弟试图更改系统时间,则时间和基线都不会受到影响,因此他当前的旁路方法将不起作用。然而,他仍然可以更改系统时间,然后重新启动,并且在启动时程序会保存一个新的基线并被愚弄。不过,除非你告诉他,否则我怀疑他会走这么远


    祝你好运,玩得开心

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

  • 让您的程序在内存中保留启动时间
  • 让你的程序启动它自己的时钟
  • 出于“实时”目的,忽略系统时间
  • 假设您的程序在15:24:22开始。它会记得那个时刻,因为它是基线。同时,您启动一个计时器:

    Dim chron As Stopwatch = Stopwatch.StartNew()
    chron.Start()
    
    从这一点开始,您需要通过添加
    chron
    上经过的时间和先前保存的基线时间来访问“Now”。您应该有一个用于此目的的函数

    如果您的兄弟试图更改系统时间,则时间和基线都不会受到影响,因此他当前的旁路方法将不起作用。然而,他仍然可以更改系统时间,然后重新启动,并且在启动时程序会保存一个新的基线并被愚弄。不过,除非你告诉他,否则我怀疑他会走这么远


    祝你好运,玩得开心

    也许您可以使用REST服务获取当前时间?也许您可以使用REST服务获取当前时间?他会的,但我可以把数据保存在电脑上,这样就可以了。我会试试看,看看如何保存数据是个好主意,但是安德烈·卡佐关于使用网络服务的评论会确保你的时钟始终是无偏的(除非你的兄弟拔掉互联网,但那时他必须离线玩)。如果你对这个想法感到放心,这将是我所能想到的最好的解决方案。是的,我一直在寻找一个,我甚至在www.aragonloaders.ml/time上制作了我自己的非常简单的版本,但是我无法正确地获得数据。如果你这样做,你会得到什么:
    Dim webClient As New System.Net.webClient Dim result As String=webClient.DownloadString(“www.aragonloaders.ml/time”)
    ??有很多方法可以做到这一点,但我很懒,所以我可能只需要对其进行regex处理。好的,这就是我使用的解决方案,我使用了我的简单api,从我的Web服务器获取时区,这应该可以做到这一点。我回家后会发布我使用的代码,以帮助可能需要此解决方案的其他人。他会的,但我可以将数据保存在计算机,这样就可以了。我试试看,看看它是怎么运行的。保存数据是个好主意,但是安德烈·卡佐关于使用网络服务的评论可以确保你的时钟始终是无偏的(除非你哥哥拔掉互联网的插头,但那时他必须离线玩)。如果你对这个想法感到放心,这将是我最满意的解决方案。是的,我一直在寻找一个,我甚至在www.aragonloaders.ml/time上制作了自己的非常简单的版本,但我无法正确地获取数据。如果你这样做,你会得到什么:
    Dim webClient As New System.Net.webClient Dim result As String=webClient.DownloadString(“www.aragonloaders.ml/time”)
    ?有很多方法可以做到这一点,但我很懒,所以我可能只需要对它进行regex处理。好吧,这就是我使用的解决方案,我使用了我的简单api,从我的Web服务器获取时区,这应该可以做到这一点。我回家后会发布我使用的代码,以帮助可能需要此解决方案的其他人