限制python程序的执行次数

时间:2011-05-17 14:12:38

标签: python

您好 我在python2.6中创建了一个程序,并用py2exe转换为exe。 我希望这可以限制次数 用户可以使用,然后用计数器或库来阻止。 有什么想法吗?

4 个答案:

答案 0 :(得分:4)

将计数存储在注册表中,或将其与程序一起写入文件。但是,除非您设法加密计数文件,否则最终用户都可以轻松修改。

由于它是来自py2exe的.exe,如果您使用AES加密之类的东西,并且可执行文件中存储了字符串密钥来加密/解密它,那么至少会有一个低障碍。有进取心的用户仍然可以通过从可执行文件中提取密钥来找到解决方法。

或者,您可以将程序调用到您控制的服务器,并在您自己的数据库中增加其使用计数。

这些似乎都不是一个很好的答案,只是提供想法。

答案 1 :(得分:2)

将启动次数写入文件并进行检查。

如果您想要100%安全且安全的方式来阻止用户启动您的应用超过15次,那么您就不应该发布它。这是确保用户不会启动超过15次的唯一工作方式。

理由:如果他关心的话,任何好的黑客都能在几分钟内解除你的保护。普通用户不知道从哪里开始。所以你可以用很少的努力获得良好的(99%)保护,或者通过99%的努力获得很多努力。

答案 2 :(得分:1)

你可以像以下那样做:

import os
import sys

COUNT_FILE = os.path.join(SOME_PATH, '.myprog.count')
if not os.path.exists(COUNT_FILE):
    num = 0
else:
    f = open(COUNT_FILE, 'r')
    num = int(f.read())
    f.close()

if num+1 > 3:
    print >>sys.stderr, "You have exceeded your %d uses"%(num,)
    sys.exit(0)

num += 1
f = open(COUNT_FILE, 'w')
f.write(str(num))
f.close()

如果你试图为某种“试用版”做这个,这种技术很容易打败。我认为很多Windows程序都会在注册表中存储这样的计数器。

如果你问如何让你的可执行文件自行修改,我认为这是一个难题,而且我不知道有人曾经以这种方式使他们的试用版软件工作。

答案 3 :(得分:0)

编译后的二进制文件无法(轻松)修改自身以跟踪此类内容。您将不得不在注册表或某些Web API上编写计数器,并在应用程序(可执行文件)启动时检查该计数器。

请记住,这不会阻止那些阻止反击的人 - 只是一个偶然的用户。