将过期日期设置为.NET输出(不带硬件加密狗)



我对这个问题的第一个解决方案是使用OS/BIOS计时器,并使用加密的日期文件(请参阅下面的伪代码)进行检查

public void CheckFrequently()
{ 
   DateTime registeredDate = ReadFromBiosOrOSTimer(); 
   DateTime readEncryptedDate = ReadFromEncryptedFile(); 
   if(registeredDate >= readEncryptedDate) 
   { 
      ShowExpireDateForm();
      CloseProgram();
   }
}

在这种情况下,很明显,用户可以很容易地更改OS/BIOS定时器,而我的方法不起作用。

我的问题是:

  1. 有什么方法可以解决用户操作系统/BIOS计时器更改问题吗
  2. 有没有更好的方法来设置.Net项目的截止日期

(我的答案是假设你想要一个某种"过期"的程序。)

最终,一切都是老大哥的答案是从外部来源,比如网络服务,检索一个可信的时间。当然,连通性(或缺乏连通性)可能会使这成为不可能。

除此之外,他们知道如果有人要欺骗时钟,他们很可能会在接近到期时这样做,定期在某个地方写下当前时间的时间戳。如果您遇到检索到的(通过系统调用)时间小于上一个时间戳的情况,则可能有人试图欺骗时钟,您可以使用适当的错误消息使会话/实例无效。一旦你检测到"过期"的情况,很容易切换开关并拒绝再运行。

尽管如此,像这样的对策很可能总是被决心足够的对手击败

最新更新