java - 保护应用程序不被从一台 PC 复制到另一台 PC

标签 java desktop

我创建了一个 JavaFX 应用程序。现在我想确保它不被复制到其他计算机上。更详细地说,我将该应用程序出售给一位客户,安装该应用程序后,我需要确保其不被从一台计算机复制到另一台计算机。

如何防止他人复制应用程序?

最佳答案

规则是:您不能阻止在其计算机上拥有管理员权限的用户复制该计算机上存在的任何文件的位。句号。

您能做的最好的事情就是找到一个标识该特定机器的硬件标识符,并在某个地方(在可执行文件本身或辅助文件中,甚至通过网络上的网络)混淆该值您拥有的服务器)。

当程序运行时,它可以将硬件标识符与其存储的标识符进行比较,如果不同则进行扼流。

限制:

  • 除非您自己进行安装,否则很难阻止用户在安装前复制程序。这意味着您需要在安装时执行在线步骤,以防止来自同一源的多次安装
  • 如果用户由于任何原因必须更改您监控的硬件,则测试将失败,而应允许用户使用您的程序 => 准备好提供相关支持。并且请确保,如果您没有明确要求,普通用户不会仅仅因为内部网络接口(interface)不再使用而认为他的程序不再工作。

TL/DR:您正在尝试使用技术方法来解决法律问题。如果可以的话,不要这样做。我记得旧程序需要并行端口上的特殊硬件。这引起了很多噩梦,因为我工作的组织突然出错,决定不再购买需要硬件 key 的软件,即使更好或更便宜。用户体验确实是一个选择标准,而那些@#&! 安全工具提供非常糟糕的用户体验。

关于java - 保护应用程序不被从一台 PC 复制到另一台 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852068/

相关文章:

java - 获取打开的窗口和选定的项目时出现错误 com4j.ComException : 80004005 .\invoke.cpp:51

java - 如何修复java.lang.OutOfMemoryError : Java heap space when generating pdf document?

java - 捕获spark中执行的sql的异常

java - zxing 在哪里检查亮度、取景器图案和纠错级别

php - C++ PHP 桌面和 CEF 崩溃 LoadUrl()

css - 移动和桌面 CSS 文件、cookie 以及两者之间的切换

java - 如何将仅获取选定的子实体与父实体连接起来

macos - 在现有的flutter项目上启用不同风格的桌面平台

linux - 切换到 Linux

html - 设备宽度和设备高度在桌面浏览器中是否不能正常工作?