主页 » 支持 » 用户手册 » 授权系统 » 集成到应用程序 » 步骤1.10:用户数据

步骤1.10:用户数据

序列号最多可容纳 255 字节的任意数据,授权系统按原样传递给程序。该数据可以包含有关销售的任何附加信息、完整版本操作所需的数据或其他内容。让我们修改我们的 main() 函数,让它从一个序列号中读取数据并将它们显示在屏幕上:

int main(int argc, char **argv)
{
        char *serial = "Xserialnumber";
        int res = VMProtectSetSerialNumber(serial);
        print_state(res);
        if (res) return 0;

        VMProtectSerialNumberData sd = {0};
        VMProtectGetSerialNumberData(&sd, sizeof(sd));
        printf("序列号有 %d 个字节的数据\n", sd.nUserDataLength);
        for (int i = 0; i < sd.nUserDataLength; i++)
                printf("%02X ", sd.bUserData[i]);
        printf("\n");
        return 0;
}

我们还将 Ini 文件简化为:

[测试授权]
AcceptedSerialNumber=Xserialnumber

现在,我们运行程序并确保我们的序列号运行良好,但不包含任何数据:

state = 0
序列号有 0 个字节的数据

要将新的用户数据添加到序列号中,我们需要在 ini 文件中创建 UserData 变量并以 HEX 格式为其分配数据。符号必须成对出现,即一行的长度必须是 2 的倍数。像这样:

UserData=010203A0B0C0D0E0

在这种情况下,如果我们运行程序,我们将收到以下结果:

状态= 0
序列号有 8 个字节的数据
01 02 03 A0 B0 C0 D0 E0