如何为VBA应用程序创建产品密钥,以防止软件的非法分发?

如何为VBA应用程序创建产品密钥,以防止软件的非法分发?,vba,excel,Vba,Excel,我正在开发一个Excel VBA应用程序 我的公司想把它做成一种产品。此应用程序只能安装在一个系统上。有人能帮我一下吗。这只是一个关于如何确保您的产品只安装在一个系统上的基本示例 逻辑: 检索硬件ID(例如:硬盘号、CPU号等) 您也可以询问用户名和电子邮件地址 加密上述信息以生成唯一代码(这在应用程序中完成) 用户向您发送唯一代码(可以通过电子邮件/在线激活/电话) 根据唯一代码 检索硬盘序列号和CPU号的代码 将此代码粘贴到类模块中(不是我的代码。代码中提到的版权信息) 一旦你有了这个信息,

我正在开发一个Excel VBA应用程序


我的公司想把它做成一种产品。此应用程序只能安装在一个系统上。有人能帮我一下吗。

这只是一个关于如何确保您的产品只安装在一个系统上的基本示例

逻辑:

  • 检索硬件ID(例如:硬盘号、CPU号等)
  • 您也可以询问用户名和电子邮件地址
  • 加密上述信息以生成
    唯一代码
    (这在应用程序中完成)
  • 用户向您发送
    唯一代码
    (可以通过电子邮件/在线激活/电话)
  • 根据
    唯一代码
  • 检索硬盘序列号和CPU号的代码

    将此代码粘贴到类模块中(不是我的代码。代码中提到的版权信息)

    一旦你有了这个信息,你就可以将它与名字、姓氏和电子邮件地址合并,创建一个字符串。比如说

    strg = Trim(FirstName) & Chr(1) & Trim(LastName) & Chr(1) & _
           Trim(EmailAddress) & Chr(1) & Trim(CPU) & Chr(1) & Trim(HDNo)
    
    一旦获得字符串,就可以对其进行加密。下面是加密它的另一个基本示例。您可以选择任何您想要的加密类型

    For i = 1 To Len(strg)
        RandomNo = (Rnd * 100)
        tmp = tmp & Hex((Asc(Mid(strg, i, 1)) Xor RandomNo))
    Next
    
    上面的
    tmp
    保存加密字符串

    收到此字符串后,您必须对其进行解码,并根据该字符串创建一个
    激活Id
    。您的应用程序应该能够接受
    激活Id
    。您还可以选择将此信息存储在注册表或Dat文件中

    一个简单的注册窗口可能如下所示

    希望这能让你开始!:)


    IMP:虽然您可以锁定VBA项目,但它绝对不是防黑客的。您可能希望探索VSTO以创建完成上述任务的DLL。

    非常感谢您提供了所有详细步骤。非常感谢您抽出时间整理所有信息。你救了我的命。非常感谢…@SiddharthRout嗨,那么背后的想法是锁定VBA项目?但是正如你提到的,它很容易被破解?@Larry:像我提到的那样锁定VBA项目并不是一件理想的事情。我们可以采用VSTO方法来创建DLL。@SiddharthRout,这在x64机器上有效吗,比如操作系统windows 8.1 x64?我计划在MS Access VBA中使用此代码,我们可以使用.accde将VBA更改为机器代码。@SiddharthRout,我得到的子函数或函数未为GetWmiDeviceSingleValue定义。这似乎不是API,我搜索了Net和APIGuide。
    strg = Trim(FirstName) & Chr(1) & Trim(LastName) & Chr(1) & _
           Trim(EmailAddress) & Chr(1) & Trim(CPU) & Chr(1) & Trim(HDNo)
    
    For i = 1 To Len(strg)
        RandomNo = (Rnd * 100)
        tmp = tmp & Hex((Asc(Mid(strg, i, 1)) Xor RandomNo))
    Next