我最初打算使用签名的序列化 xml 文件来存储许可证详细信息。 在规划中,越来越多的内容已转移到此“许可证文件”中,这将允许我们分发单个应用程序并通过提供的许可证文件控制可用功能。
UI 和打印报告与分销商 Logo 联合品牌化,因此如果可以将其嵌入到许可证中就好了。我知道这可以通过序列化的 xml 文件来完成,但我想知道将这些数据存储在已编译的程序集中的优缺点是什么?
许可证生成工具可以使用适当的属性和资源编译程序集并对其进行签名。
更新
据我所知,使用序列化 xml 或程序集非常相似。从我的角度来看,程序集允许我添加其他资源并为将来留下一些灵 active 。一旦资源变得复杂,xml 序列化就会很痛苦。
更新2
该软件仅适用于我们的硬件,因此许可证安全性不是一个大问题。主要目的是阻止临时用户启用他们未付费的功能。为了设计简单,我会选择一个而不是另一个!
最佳答案
签名的 xml 许可文件有一些优点,但它们可能不适用于您的情况:
- 您可以使用记事本或网络浏览器等简单工具检查其中的内容。如果您必须管理大量许可证并且需要花费大量时间,则只需查看文件即可更轻松地检查许可证范围。甚至客户也可以通过电话向您读出其执照中最重要的内容。
- 如果可以为单个应用程序安装分配多个许可(每个用户、每个功能等),则管理 xml 文件列表比动态加载程序集更容易。
- 创建客户端许可证创建工具更容易 -> 应用程序将提交未签名的 xml 文件进行签名。
- 版本控制更容易。如果您的软件的新版本有新的许可选项,并且旧许可证应该适用于升级版本,根据您对单一许可程序集的实现,您可以破坏旧软件。
如果您没有任何这些特定需求,请选择“程序集即许可”选项,因为它更易于实现。
更新
看看在我之后弹出的其他答案 - 对在本地计算机上运行的软件的完美保护不存在,而且很可能在很长一段时间内都不存在。不要花太多时间在保护您的软件上,因为如果有人真的、真的想免费使用它,他会找到办法的。让用户有更多理由使用您的应用程序并简化购买体验。
在 dll 或外部 xml 文件中签署许可证就足够了。
关于c# - 使用程序集作为许可证文件的优点/缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150555/