我有一个使用配置文件的程序。
我想将配置文件绑定到 PC,因此将文件复制到另一台具有相同配置的 PC 上将不起作用。
我知道 Windows Activation Mecanism 正在监视硬件以检测更改,并且它可以容忍对硬件的一些细微更改。
有没有图书馆可以帮助我做到这一点?
我的另一个选择是使用 WMI 来获取硬件配置并编写我自己的容忍机制。
非常感谢,
尼古拉斯
我有一个使用配置文件的程序。
我想将配置文件绑定到 PC,因此将文件复制到另一台具有相同配置的 PC 上将不起作用。
我知道 Windows Activation Mecanism 正在监视硬件以检测更改,并且它可以容忍对硬件的一些细微更改。
有没有图书馆可以帮助我做到这一点?
我的另一个选择是使用 WMI 来获取硬件配置并编写我自己的容忍机制。
非常感谢,
尼古拉斯
Microsoft 软件许可和保护服务具有将许可证绑定到硬件的功能。这可能值得研究。这是您可能也会感兴趣的博客文章。
如果您希望将数据的使用限制在特定的 PC 上,您必须自己实现此功能,或找到可以执行此操作的第三方解决方案。没有提供此功能的通用 Windows API。
您需要定义您当前所称的“机器”。
如果我更换 CPU、内存和硬盘驱动器,它仍然是同一台计算机吗?网卡、显卡?
什么定义了机器?
有很多很多许可库可以为您执行此操作,但几乎所有许可库都是收费的(因为从表面上看,您只想以这种方式保护商业软件)。查看 RSA、Verisign 甚至 microsoft 必须提供的内容。Windows API 没有公开这一点,表面上是为了防止黑客攻击。
或者,自己做。这并不难,困难的部分是定义你认为的机器是什么。
如果您决定跟踪 5 个东西(HD、网卡、显卡、主板、记忆棒)并且在需要新许可证之前允许 3 次更改,那么用户可以复制硬盘驱动器,取出上述两个,放入一台新机器,用旧机器中的新部件替换它们,然后在两台单独的 PC 上运行您的程序。
所以它确实需要一些思考。
-亚当
如果机器有网卡,你可以随时检查它的mac地址。这应该是唯一的,并且将其作为程序启动例程的一部分进行检查应确保它一次只能在一台机器上运行……即使您卸下网卡并将其放在另一台机器上,它也只能在该机器上运行机器。不过,这将阻止网卡升级。
也许你可以在注册表中保留一些东西?就像这个文件的最后修改时间戳一样——如果注册表中没有条目或者时间戳不匹配然后回退到默认值——那会起作用吗?(给猫剥皮的方法不止一种;))