C# 设定申请有效期

C# 设定申请有效期,c#,drm,C#,Drm,我想为我的C#Windows应用程序设置过期日期 这意味着,30天后,我的应用程序将无法工作。当我们使用系统时间时,这很容易做到,这意味着每当我的程序启动时,我都会检查今天的日期和过期日期 问题是,如果用户更改系统时间,我的比较将不正确 还有什么其他方法可以做到这一点呢?我想找到一种更好的方法让人们愿意为应用程序付费,因为与之抗争可能是一种徒劳的努力,尽管在硬件加密狗、家庭电话服务等方面你可能会变得更困难。如果你的价格不高,客户不会愿意忍受这种情况。第一道防线是检查服务器,检查他们的系统时间,这

我想为我的C#Windows应用程序设置过期日期

这意味着,30天后,我的应用程序将无法工作。当我们使用系统时间时,这很容易做到,这意味着每当我的程序启动时,我都会检查今天的日期和过期日期

问题是,如果用户更改系统时间,我的比较将不正确


还有什么其他方法可以做到这一点呢?

我想找到一种更好的方法让人们愿意为应用程序付费,因为与之抗争可能是一种徒劳的努力,尽管在硬件加密狗、家庭电话服务等方面你可能会变得更困难。如果你的价格不高,客户不会愿意忍受这种情况。

第一道防线是检查服务器,检查他们的系统时间,这样用户就不能更改自己的时间。还尝试隐藏开始日期(可能在注册表中的某个虚拟名称下)。但是这些都是徒劳的,聪明的用户可以用最小的努力来“破解”它。

反汇编C应用程序很简单,所以无论你实现什么都很容易规避。在我看来,最好的选择是使用第三方许可工具,但请记住,所有这些工具都可以绕过,尽管它们会更加强大。

您可以使用一个网站,该网站可以保留时间来确定程序的安装时间


你可能会得到一些建议,说这不值得你努力

可能需要在应用程序安装文件夹中保留一个伪.dll文件,打开它并保留天数和安装日期时间。每次应用程序加载时,都要检查它。人们不会尝试打开和读取Dll文件。也许你也可以在里面加密和存储。这可能非常简单。

你的应用程序被盗版的可能性有多大?除了粗略的检查,花时间/费用做任何事情都值得吗

简单地拥有两个版本的DLL可能更容易——一个必须每X天与服务器通信一次,以确保它仍然处于活动状态,另一个是“解锁”(已购买)版本


如前所述,无论你做什么,坚定的用户都会找到解决方法,因此你必须评估努力/回报,以确定尝试保护你的应用程序的价值。

在某个在线位置与服务器进行检查会迫使客户端连接互联网。除非你的应用程序不需要任何到远程服务器的连接,否则这不是我真正需要的选项。因为我的应用程序不需要internet连接,这对我的应用程序来说会有一点限制。internet连接永远不可接受。。每个应用程序都不能访问互联网。你是说这将是一个简单命名为
.dll
的纯文本文件吗?是的,它可以,因此说它是最简单的解决方案。主要是为了欺骗用户它是一个应用程序文件,但它只是有一些加密的安装日期时间和最大天数。首先我想到了这个解决方案,但我们想设置过期日期的天数,而不是应用程序加载的数量和应用程序加载的次数?!那个么现在我如何确定现在的日期和dll中的过期日期进行比较?!如前所述,当你安装应用程序时,让installsheild(如果你发布它的方式是这样的)启动应用程序(强制),一旦应用程序加载,创建此文件并占用系统时间。到现在为止,您已经知道它的安装时间,并且您已经知道它可以运行多少天。只需加密该文件中的DT并保存它。因此,每次装载时,读取该值并计算剩余天数。剩下的逻辑你知道吧?虽然这是一种我在我的项目中从未实现过的方法,但仍然是一种很好的方法+1你的意思是我使用许可证,比如一些像.NET Reactor!这样的软件!?是的。NET Reactor、Licensespot等。有许多试用软件/定时炸弹许可解决方案,但您必须始终记住,它们都不是完美的。一个成熟的第三方许可解决方案将比你一夜之间编写的东西更加健壮,尤其是在一个不需要拆解的应用程序中。我使用了.NET Reactor,但没有影响!道歉。你需要的是同一个组织制作的。我也用过,但什么都没做!!!我将过期日期设置为今天=>然后单击finilize=>但什么也没做!