我使用一个程序(在 Windows 上),我不会透露其名称,它可以从命令行打开,无需经过任何身份验证。我正在尝试创建一些安全措施来防止其他人以这种方式访问它。
我计划用批处理文件替换该程序的内置二进制文件,该批处理文件的第一行指向我自己的身份验证系统(在 python 中实现,使用 py2exe 编译为 .exe),第二行指向命令打开程序。
我最初的计划是让我的脚本(auth.py)在身份验证失败时停止批处理文件执行第二行,如下所示:
if not authenticated:
print('Authentication failed')
sys.exit(1)
else:
print('Successfully authenticated!')
我曾指望 sys.exit(1) 来完成此操作,并且在完成脚本开发之前我没有费心对其进行测试。现在我意识到 sys.exit 只退出 python 进程。
我要么需要一种方法来从 python 脚本停止批处理过程,要么需要一种方法让批处理从 auth.py 检测退出代码(如果失败则为 1,如果通过则为 0)并仅在以下情况下执行其他程序:从那里退出代码是 0。
如果有人能给我任何建议或任何形式的帮助,我将非常感激。 谢谢!
最佳答案
使用subprocess
在身份验证成功后调用该程序。所以你的 python 脚本将启动该程序,而不是批处理文件。
if not authenticated:
print('Authentication failed')
sys.exit(1)
else:
print('Successfully authenticated!')
proc = subprocess.Popen([program])
请注意,如果用户有权从 python 或批处理脚本中启动程序,则没有什么可以阻止他们直接访问它。这将阻止任何人访问该程序;保存可能是极端非技术性的。
关于python - 如何使用 python 停止程序的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907163/