如何在Windows SYSTEM帐户中启动python进程

时间:2014-08-13 06:48:09

标签: python windows

我正在python中编写测试应用程序并测试某些特定场景,我需要在Windows SYSTEM帐户中启动我的python子进程。 我可以通过从我的python脚本创建exe然后在创建Windows服务时使用它来完成此操作。但是这个选项对我不好,因为将来如果我在python脚本中改变了什么,那么我必须每次都重新生成exe。

如果有人对如何做到这一点有更好的了解,请告诉我。

比什努

4 个答案:

答案 0 :(得分:2)

  1. 创建永久运行的服务。
  2. 安排服务拥有IPC通信渠道。
  3. 从您的桌面python代码,将消息发送到该IPC频道的服务。这些消息指定服务要采取的操作。
  4. 服务接收消息并执行操作。也就是说,执行发送者请求的python代码。
  5. 这允许您将服务与其执行的python代码分离,从而允许您避免重复安装服务。

    如果您不想在服务中运行,那么您可以使用CreateProcessAsUser或类似的API。

答案 1 :(得分:0)

您也可以使用Windows任务计划程序,它可以在SYSTEM帐户下运行脚本,并且界面很简单(如果您不经常测试:-))

答案 2 :(得分:0)

要运行具有系统帐户权限的文件,您可以使用psexec。下载这个: Sysinternals

然后你可以使用:

os.system 

subprocess.call

执行:

PSEXEC -i -s -d CMD "path\to\yourfile"

答案 3 :(得分:0)

只是碰到了这个-我知道,有点晚了,但是无论如何。我遇到了类似的情况,并使用NSSM(Non_Sucking Service Manager)解决了该问题。基本上,该程序使您可以将任何可执行文件作为服务启动,这是我对Python可执行文件所做的,并提供了我正在测试的Python脚本作为参数。

因此我可以运行该服务并根据需要编辑脚本。对脚本进行任何更改后,我只需要重新启动服务即可。

生产环境的一个要点:尽量不要依赖像NSSM这样的第三方软件。您也可以使用标准的SC命令(see this answer)或PowerShell(see this MS doc)来实现。