我应该在何处以及如何保存许可证相关信息?

我有一个应用程序(C#),我的任务是在其中添加一些简单的许可方案。 在这样做时,我需要在计算机中的某处保存该信息以限制使用。

我需要保存日期和柜台。

我应该如何以及在哪里保存在Windows Vista上不需要管理权限才能运行的信息? (这意味着将它保存在System32中,程序文件,HKEY_LOCAL_MACHINE不是一个选项。)

请不要用“不要做”或“无论如何都会破解”来解决问题。 我确实理解那些逻辑。 我只需要为此目的做最好的事情。

考虑使用第三方许可组件,例如XHEO – 没有必要重新发明轮子。

如果仍需要编写自己的许可证系统,请考虑使用用户的配置文件目录或HKEY_CURRENT_USER分支。

我们使用签名的XML许可证文件。 它是一个简单的XML文件,显示用户购买的内容。

关于这一点的好处是它未来的竞争。 您可以轻松添加产品function,产品系列,到期日期和function属性。

我们的商务网站可以轻松地按需创建和打包许可证,只需确保您的私钥永远不会泄露。 对我们来说,这里的优点是我们的缺点,也是我们无法避免的最大问题,就是简单地处理许可证文件。

这是一个示例xml文件

    20025fb9-5349-46d4-a530-55b0295beaaa Scott.Cate@Example.com 2008 Friendly Display Name Enterprise    0001-01-01T00:00:00           u3{..........}U2jo=   QFg1kI{...............}DwDIE=   

我们使用简单的.NET内置API来进行XML签名,并确认它是有罪的和有效的。

我喜欢的事 …

..它很容易阅读。 (用于技术支持)..它易于更换..易于存储,在文件系统中,或在我们的情况下,数据库,以便于访问和进出UI。 (我们有一个到位的更新/升级系统)..它很容易升级。 我们提供的服务可以使用您的旧许可证,并在validation后根据已购买的内容提供升级价格。 然后,商务系统记录旧的和新的许可证文件以供参考。

我不喜欢的事情……

..可以复制,轻松窃取

对于企业,我们总是使用app_root / LICENSE目录。

我们还使用自己的自定义解决方案,但是加密此数据并validation许可证日志是否相当简单。