10

在我昨天发布的另一个问题中,我得到了关于如何在 Windows 中将 Python 脚本作为服务运行的非常好的建议。我想知道的是:Windows 如何知道可以在本机工具中管理的服务(“管理工具”中的“服务”窗口)。IE。Windows 相当于在 Linux 下的 /etc/init.d 中放置启动/停止脚本是什么?

4

4 回答 4

8

不要直接弄脏注册表。使用 SC 命令行工具。即,SC CREATE

    描述:
        SC 是一个命令行程序,用于与
        NT 服务控制器和服务。
    用法:
        sc [命令] [服务名称] ...

        该选项的格式为“\\ServerName”
        可以通过键入以下命令获得有关命令的更多帮助:“sc [command]”
        命令:
          query-----------查询服务的状态,或者
                          枚举服务类型的状态。
          queryex---------查询服务的扩展状态,或
                          枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送暂停控制请求。
          interrogate-----向服务发送一个 INTERROGATE 控制请求。
          continue--------向服务发送CONTINUE控制请求。
          stop------------向服务发送 STOP 请求。
          config----------更改服务的配置(持久)。
          description-----更改服务的描述。
          failure---------更改服务在失败时采取的操作。
          qc-------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询服务失败时的动作。
          delete----------删除服务(从注册表中)。
          create----------创建服务。(将其添加到注册表中)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          GetDisplayName--获取服务的 DisplayName。
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务依赖。

        以下命令不需要服务名称:
        sc   
          boot------------(ok | bad) 表示最后一次启动是否应该
                          保存为最后一次正确的引导配置
          Lock------------锁定服务数据库
          QueryLock-------查询SCManager数据库的LockStatus
    例子:
        sc 启动我的服务
于 2008-11-03T18:03:16.090 回答
7

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

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

这篇文章也可以帮助你:

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

于 2008-08-29T10:20:39.213 回答
3

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

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

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

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

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

于 2008-08-29T15:00:52.333 回答
0

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

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

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

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

它确实需要一些注册表编辑(非常简单且非常简单),但允许您将任何命令行/脚本设为 Windows 服务。

于 2008-08-29T15:01:50.257 回答