python - 如何使用 python 停止程序的执行?

标签 python batch-file exit-code

我使用一个程序(在 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/

相关文章:

python - 在 python 中循环操作的一行

python - 遍历链表的函数

windows - 如何使用批处理文件检查驱动器格式类型

java - Android java/system/bin/ping 总是返回exitCode 2,为什么?

bash - trap/return 后退出状态到哪里去了?

c - "undefined variable"警告,但变量已在所有进程中定义

python - 如何使用公钥加密?

java - 从 Python 调用非 native Java 代码

windows - .BAT 文件中未读取 SET 变量

windows - 窗口启动时如何运行批处理文件? (登录问题)