Как я узнаю в Windows о сервисе, написанном на Python? - PullRequest
10 голосов
/ 29 августа 2008

В другой вопрос Я отправил вчера, я получил очень хороший совет о том, как скрипт Python может быть запущен как служба в Windows. Меня интересует, как Windows узнает о службах, которыми можно управлять в собственных инструментах (окно «службы» в «инструментах администрирования»). И. е. что такое эквивалент Windows для размещения скрипта запуска / остановки в /etc/init.d под Linux?

Ответы [ 4 ]

7 голосов
/ 03 ноября 2008

Не связывайтесь с реестром напрямую. Используйте инструмент командной строки 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
7 голосов
/ 29 августа 2008

Вот код для установки python-скрипта как сервиса, написанный на python:)

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

Этот пост также может помочь вам:

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

3 голосов
/ 29 августа 2008

Как и в большинстве «осведомленных» вещей в Windows, ответ «Реестр».

Взгляните на эту статью базы знаний Майкрософт: http://support.microsoft.com/kb/103000

Поиск «Win32-программа, которая может быть запущена контроллером служб и подчиняется протоколу управления службами». Это интересующий вас вид услуг.

Служба регистрации (содержимое KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ myservice) содержит информацию о сервисе, включая такие вещи, как расположение исполняемого файла, что делать в случае сбоя (остановка ОС?), какие сервисы должны быть запущены перед этим, каким пользователем он запущен.

Что касается протокола управления службами, main () вашей программы должен вызывать вызов Windows API, настраивая обратные вызовы для запуска, остановки, приостановки для вашей службы. Что вы делаете в этих обратных вызовах, зависит только от вас.

0 голосов
/ 29 августа 2008

Вы можете использовать srvany.exe из Windows NT Resource Kit для создания пользовательской службы, которая будет отображаться в инструментах администратора ...

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

Я использую этот метод для запуска tracd (скрипт / сервер Python) для trac.

Вот несколько очень четких инструкций: http://www.tacktech.com/display.cfm?ttid=197

Это требует некоторого редактирования реестра (очень минимального и простого), но позволит вам сделать любую командную строку / скрипт службой Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...