开发阶段输入授权信息能够通过,换成受保护程序却提示许可证无效,或者注册成功后重新启动又恢复未授权,这两类情况在接入许可证功能时都可能遇到。它们涉及的环节不同,有时是许可证没有被读取,有时是授权信息与当前程序不匹配。Obsidium可以返回较具体的授权状态,排查时应保留这些结果。以下讨论软件保护系统内置的本地许可证功能,操作名称采用英文界面。
一、Obsidium如何配置许可证校验
许可证生成、保存和运行时判断需要相互配合。项目中的密钥对用于签发与验证授权,客户收到的许可证则是另一份数据,两者应分别管理。
1、选择授权体系并生成测试许可证
长密钥与短密钥使用不同的授权体系,接入函数也有区别。项目已经发布后,应保留原有密钥对,避免后续版本与已发出的许可证失去对应关系。
①打开【Key management】,在授权体系列表中选择【Internal licensing system(long keys)】或【Internal licensing system(short keys)】。
②初次配置时选择密钥长度,点击【Generate encryption keys】,保存项目并备份。
③填写许可证信息,需要绑定设备时填写对应的系统标识。
④长密钥点击【Generate】,短密钥点击【Generate key】;短密钥需要固定到期日等功能时,勾选【Generate advanced key】。
2、确定保存位置并接入状态判断
①打开【Settings】中的【Licensing】,在【License key location】中选择【Keyfile】或【Registry】,设置文件名、目录或注册表路径。
②自行管理授权数据时,选择【Manual load/save】,通过【obsSetLicense】或【obsSetLicenseShort】加载对应类型的许可证。
③需要由保护系统保存授权时,调用【obsStoreLicense】或【obsStoreLicenseShort】,记录返回结果。
④加载完成后调用【obsGetLicenseStatus】,并在进入授权功能前调用【obsIsLicensed】。
加载函数返回成功,表示数据被接受,不能直接当作许可证有效。保存成功同样不代表授权条件已经满足。若勾选了启动时必须持有有效许可证的选项,还应安排独立的授权录入方式,否则用户可能连程序内的注册窗口都无法打开。
二、Obsidium授权被判无效如何核验
应用界面可以给出简短提示,诊断记录则应保留具体状态。文件未找到、授权过期、设备不匹配,不宜都被转换成同一句“注册码错误”。
1、没有找到许可证时检查读取位置
①调用【obsGetLicenseStatus】,确认返回值是否为【LIC_STATUS_NOTFOUND】。
②返回【License key location】,核对实际选择的【Keyfile】或【Registry】及其路径。
③使用文件保存时,核对【Name of keyfile】;使用注册表时,核对【Registry key】和当前运行账户。
④若使用【Manual load/save】,检查启动流程是否确实调用了对应的许可证加载函数。
2、数据无效时核对项目和授权信息
返回数据无效状态时,应检查原始许可证与当前程序是否配套。重新生成密钥对、取错项目文件,或者录入信息被修改,都可能让原来签发的许可证无法使用。
①确认【obsGetLicenseStatus】返回【LIC_STATUS_INVALID】,保留原始许可证副本。
②打开签发时使用的【Key management】,核对长短密钥类型及项目来源。
③使用短密钥时,将签发时的许可证信息与密钥一起重新录入,保留信息字符串原有大小写。
④将同一份授权交给对应版本的受保护程序测试,记录结果。
3、设备不匹配时核对绑定条件
①遇到【LIC_STATUS_BAD_SYSTEMID】时,通过【obsGetSystemId】取得当前设备标识。
②在【Licensing】中核对【Lock licenses to system】及选中的硬件项目,对照签发记录。
③使用短密钥时,检查【obsSetLicenseShort】传入的【lpSysId】,同时核对【Use legacy hardware-locking】设置。
更换主板、硬盘或相关设备后,绑定条件可能发生变化。配置了允许部分组件变化的项目,在重新录入授权时,还可能需要原始系统标识参与处理。是否重新签发,应依据原定授权规则判断,不能靠临时放宽绑定条件来代替核验。
4、过期或被列入黑名单时分别处理
①返回【LIC_STATUS_EXPIRED】时,核对签发记录中的到期日,并检查Windows【设置】中的【时间和语言】→【日期和时间】。
②返回【LIC_STATUS_BLACKLISTED】时,打开【User database】,找到对应客户和许可证,检查黑名单记录。
③记录出现问题的程序版本,对照该版本使用的项目及授权记录。
到期限制与黑名单是两项不同条件。设备时间异常应按正常时间校准,黑名单问题则要查明记录来源。授权本来已经到期,或确实被停用时,应按既定业务流程处理,避免反复生成测试许可证混入正式记录。
三、Obsidium许可证校验接入后怎样复核
注册窗口显示成功,只覆盖了授权录入的一小段流程。程序退出后的保存结果、重新启动后的读取结果,以及最终进入功能时的状态,都应有对应测试。
1、确认测试的是受保护程序
①保留未保护程序,在独立目录生成受保护版本。
②对受保护版本分别测试无许可证、有效许可证和无效许可证,记录【obsGetLicenseStatus】结果。
③在授权功能入口调用【obsIsLicensed】,核对不同状态下的实际行为。
未保护状态下,部分授权函数会返回用于开发调试的成功结果。例如,授权状态查询会返回有效,保存函数也可能返回成功却没有写入数据。因此,源码调试通过只能说明接入流程能够执行,授权判断还要在受保护版本中验证。
2、核对保存、重启和账户变化
保存位置和数据加密方式会影响许可证的后续读取。当前进程内有效,重新启动却失效时,应检查持久化过程,避免只重复验证注册码内容。
①调用【obsStoreLicense】或【obsStoreLicenseShort】,记录返回值,并核对对应文件或注册表数据。
②完全退出程序后重新启动,再次读取【obsGetLicenseStatus】。
③启用了【Encrypt license data on disk】时,检查许可证是否通过保存函数写入,避免直接放置未加密数据。
④启用了【Encrypt per user】时,使用实际部署账户复测,记录账户切换后的状态。
总结
Obsidium的许可证功能可以把授权范围、使用期限和设备条件纳入程序管理,让软件发布后的使用规则有明确依据。对接入这项功能的团队来说,清楚区分数据读取、授权验证与保存结果,有助于减少误判,也方便后续处理版本更新和设备变更。授权提示应当便于用户理解,内部记录则应足够具体,两者配合才能让维护工作更有条理。希望这些核验方法能帮助大家理清问题。如有Obsidium相关需求,欢迎与我们沟通咨询。