【问题标题】:A fixed absolute path for all PC所有 PC 的固定绝对路径
【发布时间】:2014-12-21 19:45:19
【问题描述】:

我正在开发一个 java 应用程序,它有一个试用版。 我需要将激活应用程序的所有信息保存在 xml 文件中(例如过期日期和应用程序 ID),我需要将此文件保存在所有电脑都相同的绝对路径中。

你能帮帮我吗?

【问题讨论】:

    标签: java linux windows


    【解决方案1】:

    不要。对任何事情都使用绝对路径是非常糟糕的做法。 为什么不将 XML 文件保存到特定于用户的文件夹(如果您的许可证绑定到人),或者保存到与您的应用程序相关的文件夹(如果您的许可证绑定到机器,正如您的问题所表明的那样)?

    【讨论】:

    • 问题是,如果我将它保存到与应用程序相关的文件夹中,如果有人在过期日后删除整个文件夹并重新安装应用程序,它将获得同一台机器的新试用版,我不希望这种情况发生
    • 如何将其保存到特定于用户的文件夹中?像在“我的文档”文件夹中?
    • 如果用户删除了您固定位置的文件怎么办?然后,即使不卸载应用程序,她也可以创建新密钥。有一些方法可以解决您的问题,或者通过将许可证密钥绑定到机器(例如,参见 License4J),或者通过确保一个人不能请求多个密钥(通过在生成密钥时要求一个之前未使用过的有效电子邮件地址)例子)。 “隐藏位置安全”是“混淆安全”的一种形式,并不是一个好主意。
    • 请参阅stackoverflow.com/a/1570764/4134826 了解如何将文件保存到特定于用户的位置。
    • 处理保存设置(许可证信息可被视为“设置”)的一种好方法是使用 Java Preferences API(请参阅stackoverflow.com/a/711360/4134826)。它将平台相关方面隐藏在干净的界面后面。
    【解决方案2】:

    我同意使用绝对路径可能不是要走的路,但要解决您的问题,您可以像这样获取用户的名称

    String username = System.getProperty("user.name");
    

    从那里您可以使用 windows 文件结构进入文档文件夹

    String documentsFolder = "C:/Users/"+username+"/Documents";
    

    使用该目录路径,您可以读取和写入该文件夹。此文件夹结构仅适用于 windows,对于 Mac 或 Linux 机器需要更改,但可以通过相同方式获取用户名。

    只是一个建议。如果您仅支持 Windows 机器,则您可以使用应用程序的开始和结束日期创建一个注册表,并将其用作参考点,即使卸载或重新安装应用程序也将保持一致。也可能创建一个带有日期的系统变量可能是另一种方法。只是一些想法。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 2013-08-28
      • 2018-01-18
      • 2014-08-17
      相关资源
      最近更新 更多