我想提供我的软件的试用版.此版本只应在特定时间段内进行评估.我们只说2011年1月.
由于该软件在处理中大量使用系统时钟,因此将时钟设置为较早的时间以便能够反复使用它将是非常烦人的.因此,我没有想到更复杂的保护机制.
所以我考虑过如下测试后退出:
if (DateTime.Now.Year != 2011 && DateTime.Now.Month != 1)
{
MessageBox.Show("expired!");
Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)
这有多容易破解:-)?
这样做有"安全"的方法吗?
基本上你可以说不可能保证试用软件不被破解.您在软件中所做的一切都可以被绕过(是的!甚至是Ring-0驱动程序).
即使您有一个外部加密狗,您可以通过软件欺骗您开始进行身份验证.虽然不容易:-)
你只能努力而不是不可能:-)
它与破解它并不完全相关,但值得注意的是,如果这是一款可以在国际上使用的应用程序,那么在它们甚至有机会尝试之前,它会显示为许多用户"已过期".DateTime返回的值反映了本地用户的文化,因此 DateTime.Now.Year返回阿拉伯文化的1431和泰国文化的2553.月份可能会有所不同,因此您不应在不首先检查文化的情况下对其进行硬编码.
你可以通过每次使用InvariantCulture来解决这个问题,例如 DateTime.Now.Year.ToString(System.Globalization.CultureInfo.InvariantCulture);