这个问题非常适合TrueLicense的实现及其运作。借助于教程here和更有用的here,我已经能够使用TrueLicense在我的软件上成功应用许可。但是,我对TrueLicense的某些方面及其工作方式尚不清楚,希望有人能启发我。现在,我不明白的是,当我打电话给

licenseManager.install()


方法(确保满足其余的先决条件)实际在哪里保留了许可证文件。我知道它会以某种方式持续存在,因为第二次启动应用程序并运行

licenseManager.verify()


方法返回快乐。我真的很感谢对此有一些见识。

最佳答案

从源代码(TrueLicense):

/**
 * Installs the given license key as the current license key.
 * If {@code key} is {@code null}, the current license key gets
 * uninstalled (but the cached license certificate is not cleared).
 */
protected synchronized void setLicenseKey(final byte[] key) {
    final Preferences prefs = getLicenseParam().getPreferences();
    if (null != key)
        prefs.putByteArray(PREFERENCES_KEY, key);
    else
        prefs.remove(PREFERENCES_KEY);
}


如果使用标准的Java首选项API(java.util.prefs.Preferences),您将在Windows的注册表中看到它。在Linux和OS X上,有一个隐藏的“”。具有这些键的目录。

通常,我只使用userNodeForPackage方法,因为在Windows上不需要管理员。

08-25 08:20