如何在Windows系统账号下启动Python进程

1 投票
4 回答
2052 浏览
提问于 2025-04-18 17:06

我正在用Python写一个测试应用程序,为了测试某个特定的场景,我需要在Windows的SYSTEM账户下启动我的Python子进程。
我可以通过把我的Python脚本转换成exe文件,然后在创建Windows服务时使用这个exe来实现。但是这个方法对我来说不太好,因为如果将来我对Python脚本做了任何修改,我就得每次都重新生成exe文件。

如果有人有更好的办法来做到这一点,请告诉我。

Bishnu

4 个回答

0

我刚看到这个,虽然有点晚,但还是想分享一下。我遇到过类似的情况,最后是用NSSM(非吸血服务管理器)解决的。简单来说,这个程序可以让你把任何可执行文件当作服务来启动。我用它启动了我的Python程序,并把我正在测试的Python脚本作为参数传给它。

这样我就可以运行这个服务,并随意编辑脚本。每次我对脚本做了修改后,只需要重启一下服务就可以了。

有一点要注意,特别是在生产环境中:尽量不要依赖像NSSM这样的第三方软件。其实你也可以用标准的SC命令(看看这个回答)或者PowerShell(查看这个微软文档)来实现同样的功能。

0

要以系统账户的权限运行一个文件,你可以使用 psexec 工具。首先,下载这个工具:

Sysinternals

然后你可以使用:

os.system 

或者

subprocess.call

接着执行:

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

你也可以使用Windows任务计划程序,它可以在SYSTEM账户下运行一个脚本,而且它的界面很简单(如果你不经常测试的话 :-))

2
  1. 创建一个可以永久运行的服务。
  2. 为这个服务设置一个可以进行进程间通信的通道。
  3. 从你的桌面Python代码中,向这个服务发送消息,通过那个通信通道。这些消息会告诉服务需要执行什么操作。
  4. 服务接收到消息后,就会执行相应的操作,也就是运行发送方请求的Python代码。

这样做可以让服务和它执行的Python代码分开,这样你就不需要每次都重新安装服务了。

如果你不想以服务的方式运行,可以使用 CreateProcessAsUser 或类似的API。

撰写回答