主页 » 支持 » 用户手册 » 授权系统 » 集成到应用程序 » 步骤1.6:限制程序的运行时间

步骤1.6:限制程序的运行时间

自从程序启动那一刻起,您就可以限制它的运行。这对于演示目的很有用:您向用户提供了一个真实的序列号,但程序的运行时间不超过 5 分钟。授权系统不会强制关闭此类程序,而只是设置状态标志。因此,让我们通过在 ini 文件中添加以下行来设置一分钟的最大工作时间:

TimeLimit=1

并修改程序如下:

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.bRunningTime);
        print_state(VMProtectGetSerialNumberState());
        Sleep(60 * 1000 * sd.bRunningTime);
        printf("%d 分钟后:\n", sd.bRunningTime);
        print_state(VMProtectGetSerialNumberState());

        return 0;
}
}

程序在启动时显示序列号的状态,然后计算最大运行时间并等待它到期。然后再次显示序列号状态。将最大操作时间设置为一分钟,我们应该会收到以下结果:

state = 0
程序将运行 1 分钟。
state = 0
1 分钟后:
state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER

受保护程序应定期分析序列号的状态,如果设置了标志,则关闭。授权系统不会自动执行此操作,因为程序可能需要释放内存、将数据保存到文件等。此外,您可能希望程序在操作时间到期后不停止,而是切换到更受限制的模式。授权系统将此设置留给开发人员决定。

下一步