美文网首页后端砖头
windows脚本转服务

windows脚本转服务

作者: alue | 来源:发表于2022-07-22 21:09 被阅读0次

任务:在 windows 系统中,将python 脚本设为开机自动启动,且后台运行,防止他人误操作。

有时候,为了省事,直接在窗口里运行 python foo.py, 利用这个窗口进程,来提供某服务。但缺点就是,桌面上会有一个运行窗口,一旦被关闭,则服务进程就会退出。

最直观的解决方案就是将 foo.py 转换为 windows 服务,这样可以开机自启动,同时能够隐藏窗口,防止他人不小心关闭了这个进程。

需要的工具有三个:

  1. BatToExeConverter 软件,用来将.bat 脚本转换为 exe 程序。
  2. instsrv.exe,用来添加系统服务。
  3. srvany.exe,服务外壳,通过它,让我们的 exe 以服务的方式启动。

步骤有四步:

  1. python foo.py 写入文本文件,并保存为 foo.bat.
  2. 通过 BatToExeConverter 将 foo.bat 转换为 foo.exe.
  3. 用管理员权限运行命令
 instsrv.exe foo_service "D:\test\script_to_service\srvany.exe"

这样,服务列表里就有了名为 foo_service 的服务外壳。

  1. 配置注册表,让服务外壳关联到我们的 foo.exe. 具体做法如下:
    打开 注册表编辑器 定位到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\foo_service

一般情况下该服务名下没有 Parameters 项目,需要手动建立:
对服务名称项目右击新建项,名称为 Parameters,然后定位到 Parameters 项,新建以下几个字符串值。

  • 名称 Application 值为你要作为服务运行的 程序地址
  • 名称 AppDirectory 值为你要作为服务运行的 程序所在文件夹路径
  • 名称 AppParameters 值为你要作为服务运行的 程序启动所需要的参数

也可以用命令行完成上述操作:

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\foo_service\Parameters
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\foo_service\Parameters /v Application /t REG_SZ /d D:\test\script_to_service\foo.exe

然后就可以愉快的使用windows服务管理了。

相关文章

网友评论

    本文标题:windows脚本转服务

    本文链接:https://www.haomeiwen.com/subject/pvkvirtx.html