如何让Python生成的Windows可执行文件仅在特定时长内运行
PyInstaller打包的Windows试用版软件防篡改时长限制方案
针对你的需求,不用依赖系统时间、也不用修改exe本身的可行方案如下:
加密存储累计运行时长
放弃依赖系统时间,转而记录软件实际运行的累计时长:每次启动时记录当前时间戳,退出时计算本次运行时长,和之前的累计时长相加,将结果用加密算法(比如AES)处理后,存在用户不易察觉的位置——比如AppData目录下的隐藏文件夹、或者注册表的深层项里。用户修改系统时钟对这种方式无效,因为它统计的是实际运行的时间段,而非系统时间差。
实现时可以用cryptography库做加密,存储路径选类似os.path.expanduser("~/AppData/Local/.myapp/trial_state.bin")的隐蔽路径,文件名尽量取无意义的字符串。绑定硬件标识增强安全性
把累计时长和用户设备的唯一硬件标识(比如主板UUID、硬盘序列号)绑定后再加密存储。这样就算用户复制加密文件到其他机器,也无法正常读取,防止试用版被跨机器复用。注意优先选相对稳定的硬件标识,避免因硬件更换导致误判。反篡改校验
对存储的加密数据附加哈希校验值,每次读取时先验证哈希是否匹配。如果用户手动修改了存储的时长数据,哈希校验会失败,直接判定为篡改,让软件永久失效。行业通用思路
业内几乎不会尝试让exe自修改——一方面Windows下运行中的exe文件会被锁定无法修改,另一方面这种行为容易被杀毒软件判定为恶意程序。把关键授权数据存在外部加密存储里,是试用版限制的标准做法。
内容的提问来源于stack exchange,提问作者ExMachina
相关产品推荐
相关产品推荐

