限制Excel加载项分发

限制Excel加载项分发,excel,excel-addins,vba,Excel,Excel Addins,Vba,我有一个Excel加载项,我们希望将其部署到客户端。目前它是一个.xlam文件。我知道Excel外接程序可能不是分发软件的最佳方式,但这正是我所拥有的。我的问题是,如何保护此加载项不被用于预期客户端以外的其他计算机上 我认为: 外接程序检查某个不清楚的位置是否存在文件。如果存在,请转至步骤6 如果该文件不存在,则使用一些随机字符组合生成该文件。并将其作为注册信息显示给用户 然后用户联系我们获取激活码 我们使用一些咸哈希算法创建一个激活码,并将其发送回用户 用户在提示符中输入此激活码。宏将对其进行

我有一个Excel加载项,我们希望将其部署到客户端。目前它是一个
.xlam
文件。我知道Excel外接程序可能不是分发软件的最佳方式,但这正是我所拥有的。我的问题是,如何保护此加载项不被用于预期客户端以外的其他计算机上

我认为:

  • 外接程序检查某个不清楚的位置是否存在文件。如果存在,请转至步骤6
  • 如果该文件不存在,则使用一些随机字符组合生成该文件。并将其作为注册信息显示给用户
  • 然后用户联系我们获取激活码
  • 我们使用一些咸哈希算法创建一个激活码,并将其发送回用户
  • 用户在提示符中输入此激活码。宏将对其进行验证,然后将激活代码存储在
    .xlam
    中受保护的工作表中
  • 然后,宏检查受保护工作表中的激活代码是否对文件中的代码有效。如果没有,则提示激活
  • 如果文件和激活匹配,则允许访问外接程序中的功能
  • 我对上述想法的问题如下:

  • 文件应存储在何处?对于不允许当前用户在该位置创建文件的计算机,情况如何
  • 用户是否容易发现这些文件的存在?如果文件被复制到另一台计算机上,外接程序将对其进行验证,并且不会出现任何问题
  • 如果我们升级外接程序,它将丢失激活码。如果我们使用第二个文件而不是受保护的工作表来存储它,实际上可以很容易地解决这个问题

  • 创建需要安装密码(安装工厂、InstallShield等)的XLA/XLAM安装程序相当容易。但是,它们不能防止随意复制XLA/XLAM本身。
    但是XLA/XLAM的主要问题是,它们很容易被破解,因此任何控制嵌入XLA/XLAM中的激活的许可代码都是不安全的。根据您的目标受众,这可能有问题,也可能没有问题。
    为了提高安全性,许可证系统确实需要使用更安全的语言进行编码,最好是完全编译的DLL或可能是模糊的.NET程序集。网络上有各种各样的预构建解决方案可以实现这一点。

    你提出的方案就像你前门上的锁:它只会把诚实的人拒之门外。如果你对保护你的产品是认真的,你将需要离开VBA,使用高质量的安全解决方案(其他比我更有资格的人需要对这可能是什么发表评论)