如何让Windows了解我用Python编写的服务?

Han*_*etz 10 python windows cross-platform

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

Fer*_*cio 8

不要直接捣乱注册表.用户SC命令行工具.即,SC CREATE

    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


Esp*_*spo 7

这是安装python脚本作为服务的代码,用python编写:)

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

这篇文章也可以帮助你:

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


小智 3

与 Windows 中大多数“感知”的事物一样,答案是“注册表”。

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

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

服务注册(KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice 的内容)携带有关服务的信息,包括其可执行位置、失败时该怎么办(停止操作系统?)、在此之前必须启动哪些服务,它以什么用户身份运行。

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