将Python程序设置为在一定天数后到期

时间:2018-11-23 09:33:15

标签: python

说我想进行30天的试用或进行5天的Beta测试。我将如何使用Python处理?想法是该程序停止工作,并在该时间段后向用户显示一条消息,告知该程序已过期。我考虑过要这样做。

import sys
import time
start = time.time
expire = start + 2592000
while True:
    Run Program
    if time.time > start + expire:
        sys.exit("This program has now expired")

问题是该程序必须在用户的计算机上持续运行指定的时间。必须采用一种更简单或更明智的方法来进行处理,例如在启动时检查程序是否达到了一定的天数。预先感谢您对此提供的意见。

更新

我只是想到了另一种方法。这行得通吗?

import datetime
import sys

start = datetime.datetime.now()
expire = start.month + 1
while True:
    Run Program
    if datetime.datetime.now().month == expire:
        sys.exit("Your 1 month trial has expired.")

1 个答案:

答案 0 :(得分:0)

如果您不关心安全性,请创建一个包含首次运行日期的文件,例如:

import datetime
import sys

import os


first_launch_date_filepath = ".first_launch_date"


def is_program_expired():
# Query date of first lauch in given file
    if os.path.exists(first_launch_date_filepath):
        with open(first_launch_date_filepath, 'r') as fileRead:
            time_as_str = fileRead.read()
            start_date = datetime.datetime.strptime(time_as_str, "%Y_%m_%d")
            # Check if current time is greater than time limit
            expire_date = start_date + datetime.timedelta(days=31)
            if datetime.datetime.now() > expire_date:
                sys.exit("Your 1 month trial has expired.")
    # Supposedly first run
    else:
        start_date = datetime.datetime.now()
        with open(first_launch_date_filepath, 'w') as fileWrite:
            fileWrite.write(start_date.strftime("%Y_%m_%d"))


if __name__ == '__main__':
    is_program_expired()
    # YOUR PROGRAM

请注意:这是非常不安全的,我建议您隐藏该文件,但任何人都可以打开此python代码并通过编辑此代码或包含开始时间的文件来了解如何绕过此安全性

加密文件,将其隐藏,然后更改其名称。 最好的方法是使用服务器存储该日期,激活后,您可以将日期发送到服务器。因为这是python,所以任何用户都可以阅读,理解和修改这些代码行,以自动绕过您的安全性。