如何使Windows知道我用Python编写的服务?

如何使Windows知道我用Python编写的服务?

How do I make Windows aware of a service I have written in Python?

在昨天发布的另一个问题中,我对如何在Windows中将Python脚本作为服务运行提供了很好的建议。 我唯一想知道的是:Windows如何了解可以在本机工具("管理工具"中的"服务"窗口)中管理的服务。 即 在Windows下,等效于在Linux下将启动/停止脚本放在/etc/init.d中的Windows是什么?


不要直接与注册表混淆。使用SC命令行工具。即,SC CREATE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.
    USAGE:
        sc  [command] [service name]  ...

        The option  has the form"\\ServerName"
        Further help on commands can be obtained by typing:"sc [command]"
        Commands:
          query-----------Queries the status for a service, or
                          enumerates the status for types of services.
          queryex---------Queries the extended status for a service, or
                          enumerates the status for types of services.
          start-----------Starts a service.
          pause-----------Sends a PAUSE control request to a service.
          interrogate-----Sends an INTERROGATE control request to a service.
          continue--------Sends a CONTINUE control request to a service.
          stop------------Sends a STOP request to a service.
          config----------Changes the configuration of a service (persistant).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          qc--------------Queries the configuration information for a service.
          qdescription----Queries the description for a service.
          qfailure--------Queries the actions taken by a service upon failure.
          delete----------Deletes a service (from the registry).
          create----------Creates a service. (adds it to the registry).
          control---------Sends a control to a service.
          sdshow----------Displays a service's security descriptor.
          sdset-----------Sets a service'
s security descriptor.
          GetDisplayName--Gets the DisplayName for a service.
          GetKeyName------Gets the ServiceKeyName for a service.
          EnumDepend------Enumerates Service Dependencies.

        The following commands don't require a service name:
        sc  
          boot------------(ok | bad) Indicates whether the last boot should
                          be saved as the last-known-good boot configuration
          Lock------------Locks the Service Database
          QueryLock-------Queries the LockStatus for the SCManager Database
    EXAMPLE:
        sc start MyService

这是将python-script作为服务安装的代码,以python编写:)

http://code.activestate.com/recipes/551780/

这篇文章还可以帮助您:

http://essiene.blogspot.com/2005/04/python-windows-services.html


与Windows中大多数"知道"的东西一样,答案是"注册表"。

看一下这篇Microsoft知识库文章:http://support.microsoft.com/kb/103000

搜索"可以由服务控制器启动并遵守服务控制协议的Win32程序"。这是您感兴趣的一种服务。

服务注册(KEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services的内容
myservice)包含有关服务的信息,包括其可执行位置,发生故障(停止OS?)时应采取的措施,在此服务之前必须启动的服务,以什么用户身份运行等信息。

至于服务控制协议,程序的main()应该调用Windows API调用,为服务的启动,停止,暂停设置回调。您在这些回调中所做的全部取决于您。


您可以使用Windows NT资源工具包中的srvany.exe来创建用户定义的服务,该服务将显示在管理工具中。

http://support.microsoft.com/kb/137890

我正在使用此方法为trac运行tracd(一个python脚本/服务器)。

以下是一些非常清晰的说明:http://www.tacktech.com/display.cfm?ttid=197

它确实需要进行一些注册表编辑(非常简单),但是可以使任何命令行/脚本成为Windows服务。


推荐阅读

    linux自动运行命令?

    linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,l

    linux命令联想工具?

    linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

    linux脚本命令输信息?

    linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,l

    linux上启动脚本命令?

    linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方

    linux开启运行命令?

    linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,lin

    linux运行wps命令?

    linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps

    linux服务器搭建命令?

    linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,l

    linux运行cmd命令?

    linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑

    服务器重启命令linux?

    服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,

    linux服务端常用命令?

    linux服务端常用命令?,工作,地址,系统,网络,基础,命令,标准,工具,信息,管理,l

    linux运行两个命令?

    linux运行两个命令?,网络,地址,系统,工作,暂停,命令,网站,密码,网上,入口,Lin

    linux禁用服务命令行?

    linux禁用服务命令行?,服务,系统,软件,管理,工具,信息,状态,平台,连续,技术,l

    linux停服务常用命令?

    linux停服务常用命令?,地址,工作,系统,命令,服务,信息,标准,管理,代码,进程,l

    linux服务器删除命令?

    linux服务器删除命令?,系统,服务,管理,情况,命令,工作,互动,地址,软件,较大,l

    linux命令运行代码?

    linux命令运行代码?,代码,单位,系统,环境,连续,保险,工具,命令,文件,音乐,Lin

    linux下编写脚本命令?

    linux下编写脚本命令?,代码,时间,工具,标准,系统,实战,平台,最新,网站,文件,l

    linux定时器脚本命令?

    linux定时器脚本命令?,系统,代码,时间,工具,工作,定期,周期性,异常,任务,脚

    linux开启服务命令?

    linux开启服务命令?,服务,标准,设备,工作,网络,系统,密码,命令,服务器,终端,

    linux服务器负荷命令?

    linux服务器负荷命令?,信息,电脑,中科,环境,工具,系统,平均,检测,情况,状态,l

    linux停止脚本命令行?

    linux停止脚本命令行?,系统,工作,平台,命令,基础,第一,环境,信息,终端,程序,