如何强制执行软件试用安装的到期日期?

2023-12-29

我需要为我的定制软件提供试用期。我有一个 64 位 C# 应用程序,它使用 64 位多处理器支持 DLL。其他要包含的实用程序是用 C++ 编写的(exe 和 dll)。我必须能够加密 C# 代码、将软件加密为仅在特定计算机上运行,​​并强制执行不能通过重置计算机时钟来阻止的到期日期。

我评估了几种开源和 COTS 解决方案:Infralution Licensing System、Protector 和 ExeShield 仅举几例。它们都不满足我的所有限制。

有人知道我应该考虑的全方位解决方案吗?或者我是否需要进行一些注册表潜水并通过自定义代码强制执行?


经过几年尝试不同许可系统的过程,我发现安全性与潜在客户的疏远之间存在很强的负相关性。

您需要担心的盗版本质上有两种。一种是随意盗版——用户使用该软件而不付费只是因为他们没有真正考虑过付费。另一种是故意盗版——人们决心不付费,并且愿意付出真正的努力来不这样做。

偶然的盗版基本上可以通过温和的提醒来处理——激活密钥、时间限制等。另一方面,故意的盗版基本上是无法阻止的。正如索尼、苹果、微软、任天堂和许多其他公司会告诉您的那样,即使您拥有对硬件和软件的控制权,您的保护方案will被打破。破坏它的人很可能是为了有趣的挑战,也可能是为了获得免费软件。因此,对于特定人群来说,加强保护并不会阻止他们,反而会起到相反的作用。

与此同时,您为实现强有力的保护所做的所有努力都在驱使合法用户爬墙。也许用系统时钟检测不公正划分的旅程是因为他们改变了时区而开始的。或者也许他们必须更换损坏的硬盘或 CPU 之类的东西,这会引发系统克隆机制。或者,也许 Microsoft 更改了 Windows 的默认安全设置,导致 Windows 在您的应用程序使用时弹出一堆 UAC 警告,因为它对您用来尝试隐藏存储许可数据的文件的某些技巧不友好。在工作中,我们使用商业解决方案,并且我们发现它们的保护机制可能会由于软件中的错误而发生故障,从而导致许可证数据损坏,从而将用户锁定在程序之外。由于他们的系统存储该数据的方式,这是一种无法恢复的情况 - 客户实际上必须在不再在该计算机上使用该软件和擦除硬盘驱动器之间做出选择。是的,这种事已经发生过多次了。是的,我们因此损失了很多潜在收入。是的,一想到它造成的损害我就感到恶心,因为我们主要依赖口碑,而它产生了很多不好的口碑。长话短说,早年对海盗的天真偏执可能让我在加勒比海度过了很多次航行假期。

最糟糕的是,这只是合法用户的问题。如果万不得已的话,破解者可以借助调试器和反编译器轻松地(非常容易地)绕过它。如果该软件位于最终用户拥有的设备上,您可能会开始认为您的软件已经被破解了。正是这样,围绕着人们破解他们合法拥有的软件的想法而建立了一个家庭手工业,只是为了避免软件保护机制的烦恼。他们会给你钱,但他们仍然会破解软件,因为你的复制保护就是那么令人恼火,而且很容易规避。另一种选择 - 这就是我所走的路线 - 就是去购买不那么烦人的不同软件,或者使用免费软件。

因此,请遵循最低限度 - 注意时钟并暂停演示,因为您确实需要提醒用户向您发送支票。但不要以让他们决定不想给你支票的方式去做。如果您的目标是转化销售,请将此视为最优雅、最具成本效益且最高效的系统,可防止用户通过破坏系统时钟来违反演示期:使用具有以下功能的计算机真的非常非常烦人时钟设置为错误的日期。这仅适用于家庭用户。对于(合法的)企业来说,这甚至不是一个可行的选择。任何不被这一点吓倒的人都可能是一个脚本小子,他们从一开始就没有真正有能力为你的软件付费。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制执行软件试用安装的到期日期? 的相关文章

随机推荐

  • 仅在单击弹出模式按钮 ok jquery js 后打开新选项卡

    我有密码和用户名的形式 我希望当我单击 登录 按钮 使用正确的凭据 时 它会显示一个弹出窗口 其中包含单击时的按钮 将我带到网站的主页 您可以在这里找到代码https jsfiddle net hcu0r6dj 1 https jsfidd
  • 如何在Python SQL查询中使用变量?

    我正在使用一些复制粘贴的代码通过 Python Flask 在 MySQL DB 上执行 SQL 查询 我不熟悉它 它告诉我尝试输入变量的方式不是正确的语法 我的代码运行一个查询来查看电子邮件是否已存在 问题代码 def check if
  • 消除 tbody 标签之间的间隙

    有没有办法消除slight两者之间的差距tbody标签当它们都像这样内联显示时 http jsfiddle net kttss http jsfiddle net kttss 正如您在小提琴中看到的那样 两个桌子之间有一个微小的间隙 我知道
  • 确定 NSFetchedResultsController 是否为空

    确定 NSFetchedResultsController 是否为空 不包含任何条目 的好方法是什么 我意识到人们可以使用fetchedObjects这会将所有结果加载到内存中吗 fetchedObjects 是一个数组 是检查 0 条记录
  • android中org.json.JSONObject无法转换为JSONArray

    当我在本地主机中尝试时 它可以找到 这是我的本地主机提供的 JSON 是的 这个网址有错误http api androidhive info contacts http api androidhive info contacts id 1
  • 使用已知的用户 ID、相册 ID 和相册名称在 Facebook 应用 Android 中打开 Facebook 相册

    我努力了 Facebook 专辑 fb album s owner s 这些都不起作用 我只想打开 Facebook 应用程序并打开相册 None
  • 如何在 macOS 上的 Xcode 动态库中解开从 C++ 导出的符号

    我一直在尝试用 C 开发一个可以在应用程序中运行时加载的动态库 我终于成功了 但它有点难看 我有一个函数 它将指向 C 类的指针作为参数 如下所示 bool registerGrindPlugin Grind PluginManager m
  • 右连接等于左连接吗? [复制]

    这个问题在这里已经有答案了 一段时间以来 我只知道如何使用 INNER JOIN 完全不知道 LEFT RIGHT OUTER JOIN 的作用 虽然 正如我刚刚读到的那样 我看不出右派的目的是什么 在我看来 它与反向 LEFT JOIN
  • 创建与部分用户代理匹配的 WURFL 补丁

    我正在使用 WURFL 来识别用户是否使用移动设备 某些用户代理字符串被错误地识别为移动设备 从而导致内容类型设置不正确 这是一个现实生活中的用户代理的示例 其行为如下 Mozilla 5 0 GTmetrix http gtmetrix
  • 使用openpyxl无法读取excel文件

    我有一个 Excel 文件列表 最后一行类似 它包含有关客户的私人信息 他的名字 姓氏 电话 每个excel文件对应一个客户 我需要制作一个 Excel 文件 其中包含每个客户的所有数据 我决定自动执行此操作 所以查看了openpyxl图书
  • 程序和调试器在没有出现问题的情况下退出

    我正在开发一个 WPF 应用程序 调试时 逻辑达到某个点 然后应用程序无故退出 VS 调试器没有捕获任何内容 唯一的问题指示是输出窗口中的以下内容 程序 6228 SomeApp vshost exe 托管 v4 0 30319 已退出 代
  • 如何从扩展名为 .pyw 的 Python 脚本打印到标准输出?

    我有一个带有 wxpython GUI 和一些命令行参数的 python 程序 我使用 py2exe 生成一个 Windows 可执行文件 我不想在后台有一个命令行窗口 因此 py2exe 使其成为一个没有此窗口的 pythonw 可执行文
  • javascript中如何检查字符串是否以数字开头

    我试图确定用户是否输入了电子邮件 ID 或电话号码 因此我想检查字符串是否以 1或数字开头 以确定它是否是电话号码 如果不是 我得出的结论是这是一封电子邮件 或者我可以检查它是否以字母开头以确定 我该如何检查这个 如果这就是解决方案 我对正
  • 如何在管理器中延迟加载模型以停止循环导入?

    在 Django 中 您可以为模型创建管理器 我通过添加一个名为的新文件来做到这一点managers py在我的模型中objects MyManager 为了停止循环进口 我这样做self model 但是 如果我需要在我的经理中引用不同的
  • 使用 R 操作 shapefile 属性表

    我已经发布了这个关于GIS堆栈交换的问题 https gis stackexchange com questions 64174 how to add a field to a shapefile using r 但流量并不多 我是一名 G
  • 全屏后导航栏下的UIView

    我有一个带有导航栏的应用程序 当我单击应用程序中的照片预览时 它会全屏显示照片 但是当我关闭全屏时 我的控制器的视图位于导航栏下方 我在 StackOverflow 上看到有必要添加这一行 self edgesForExtendedLayo
  • DjangoProject 没有出现在我的 Docker-Image (Docker toolbox for windows home) 中

    我正在尝试使用 docker compose 构建一个 django 项目 例如它在Docker 文档 https docs docker com compose django 我使用 Windows 10 Home 的 Docker 工具
  • _UIFallbackPresentationViewController

    当我关闭通过点击 iPhone 上 UIWebView 中 UIMenuController 上的 定义 打开的字典时 我不断收到以下错误 Unbalanced calls to begin end appearance transitio
  • 如何使用jquery创建动态变量?

    我想要动态创建一些 jquery 变量 在我的代码中 我有一个循环 并且我想使用循环值创建一些变量 这是我的示例代码 array student parent employee each user types function index
  • 如何强制执行软件试用安装的到期日期?

    我需要为我的定制软件提供试用期 我有一个 64 位 C 应用程序 它使用 64 位多处理器支持 DLL 其他要包含的实用程序是用 C 编写的 exe 和 dll 我必须能够加密 C 代码 将软件加密为仅在特定计算机上运行 并强制执行不能通过