无论如何构建一个python程序,这样在使用一次之后,该特定程序将不再可以在任何计算机上使用?如果是这样,怎么做?
请注意,我会将程序编译为 .exe,以防万一。
更新:如果你想运行程序只禁用那个副本?好吧,简单的答案是让程序自行删除。但是,您遇到了复制保护的基本问题:用户可以制作程序的副本并单独运行它们,或者甚至在运行程序之前备份他的计算机,然后恢复备份以绕过您可能尝试的任何技巧隐藏文件或注册表设置。最终,您所能做的就是让程序难以运行两次,并非不可能。
让实际代码在服务器上运行,并让脚本简单地向服务器发送请求,要求程序运行。服务器可以忽略第一个请求之后的任何请求。
没有中央服务器?不可能。除非程序以某种方式进行通信,否则一个人在他的计算机上运行程序不能禁用其他人计算机上的程序。即使这样,如果逻辑驻留在脚本中,简单地禁用检查也不是太难。
并不真地。我可以将脚本加载到虚拟机中,保存机器的状态,然后每次我想运行脚本时重置虚拟机。
另外,由 Py2exe、cx_Freeze、PyInstaller 等生成的可执行文件很容易反汇编成您的原始源代码,因此甚至不需要有人去虚拟机来打破您的限制。
我会把它做成一个网络应用程序并让用户购买访问令牌。该软件完全在您的服务器上运行,因此无需拆卸。
如果您并不真正关心安全性,只需在注册表中添加一些键或在 AppData 中创建一个文件,在脚本运行之前检查该文件。
仅分发具有唯一密钥的 URL 的下载器。将服务器设置为仅允许从授权密钥下载(显然,使密钥难以猜测)并在成功下载后禁用密钥。
雇用并设置响应人员,以 24/7 全天候响应那些坚持认为他们应该再试一次的客户,因为他们刚刚完成下载或其他任何事情就发生了闪电。对于邪恶的业力点,与 MPAA 合作,让他们向任何此类客户释放大量的律师助理攻击猴子。
python曾经有crontab模块https://pypi.python.org/pypi/python-crontab/
也许在您的 python 脚本结束时,您可以获得时间,例如:
from datetime import datetime
str(datetime.now())
然后创建一个 crontab 以在不久的将来执行不同的脚本并覆盖你的 python 文件。或者在 Windows 上让 python 创建一个执行相同操作的批处理文件,但在开始时休眠一段时间,从 Python 运行批处理文件,然后很快,这可能是您的 .py 的结尾。
好吧,我不知道 python,但似乎你需要两个程序。第一个是启动器,另一个-您只想工作一次的主程序-由启动器加载,并在启动器本身执行后被删除/变形,因此它永远不会再次工作。我正在考虑作为一个 Windows 程序员,因为我会用一个 exe-dll 对来做这件事……我的答案可能不适用于 python。