簡體   English   中英

將Python程序設置為在一定天數后到期

[英]set a Python program to expire after a certain number of days

假設我想進行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.")

如果您不關心安全性,請創建一個包含首次運行日期的文件,例如:

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,所以任何用戶都可以閱讀,理解和修改這些代碼行,以自動繞過您的安全性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM