在Windows中将python .py作为服务启动

8 投票
3 回答
21323 浏览
提问于 2025-04-17 09:12

我创建了一个Windows服务,用来启动一个.py脚本。

sc create "Maraschino" binPath= "C:\HTPC\Maraschino\maraschino-cherrypy.py" DisplayName=    "Maraschino" depend= "Tcpip"

然后,我在注册表中添加了一个键,把这个.py文件链接到用python.exe打开。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Maraschino\Parameters]
"AppDirectory"="C:\\Python27"
"Application"="C:\\Python27\\python.exe C:\\HTPC\\Maraschino\\maraschino-cherrypy.py"

但是,当我尝试启动这个服务时,出现了错误193 0xc1。查了一下,发现这个错误是因为我试图启动的文件不是一个有效的.exe文件。我知道它不是.exe,而是.py文件,把它链接到用python.exe打开应该能解决这个问题,但我好像犯了错误。有没有人能告诉我,在把这个脚本链接到python.exe时,我可能做错了什么?

谢谢

3 个回答

0

更新来自@Ohad。首先,srvany.exe需要在所有机器上部署。

第一步:

  • 下载并安装Windows资源工具包。
  • 这个工具包可以在我的电脑里找到:C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe。
  • 然后打开命令提示符,输入以下命令:

    sc create "[你的服务名称]" binPath="C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe" start=auto DisplayName="[你的服务监控名称]"

    [SC] 创建服务成功

第二步:创建一个文件.reg,内容如下,然后双击这个文件。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[YourService]\Parameters]
"Application"="C:\\[YourService Executable].exe"

第三步:现在启动服务,它会执行你在文件.reg中指定的内容。

完成

0

我不知道sc是怎么工作的,但我觉得一定有办法把参数传递给这个程序。所以你可以试着注册 "C:\Python27\python.exe C:\HTPC\Maraschino\maraschino-cherrypy.py" 这个命令。

你也可以试试 py2exe :)

17

你可以使用srvany.exe这个工具,它是微软专门为这种任务准备的。

首先,下载并安装Windows资源工具包。注意:你只需要srvany.exe,它适用于所有版本的Windows。

假设你把Windows资源工具包安装在了C:\Program Files\Windows Resource Kits\,那么运行:

sc create "[YourService]" binPath= "C:\Program Files\Windows Resource Kits\srvany.exe"

接下来,打开regedit(注册表编辑器)。

在注册表编辑器的对话框中,选择 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > [YourService]

选中[YourService]后,从工具栏点击编辑,选择新建,然后选择键。

输入Parameters,然后按回车。

在工具栏选择编辑,再选择新建,然后选择字符串值。

输入Application,然后按回车。

右键点击Application,选择修改。

C:\Python27\python.exe C:\[YourServicePath].py

点击确定按钮。

就这样!你成功创建了一个新的服务。

撰写回答