Como faço para tornar o Windows ciente de um serviço de eu ter escrito em Python?

votos
10

Em outra pergunta que eu postei ontem, fiquei muito bons conselhos sobre como um script Python pode ser executado como um serviço no Windows. O que eu estou me perguntando é: Como é o Windows cientes dos serviços que podem ser gerenciados nas ferramentas nativas ( Serviços janela em ferramentas administrativas). I. e. o que é o equivalente do Windows de colocar um script start / stop em /etc/init.d no Linux?

Publicado 29/08/2008 em 11:18
fonte usuário
Em outras línguas...                            


4 respostas

votos
8

Aqui está o código para instalar um python-script como um serviço, escrito em python :)

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

Este post também poderia ajudá-lo:

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

Respondeu 29/08/2008 em 11:20
fonte usuário

votos
7

Não mexer com o registro diretamente. Utilizador a ferramenta de linha de comando SC. Nomeadamente, SC CRIAR

    DESCRIÇÃO:
        SC é um programa de linha de comando usado para comunicar com o
        Controlador do Serviço NT e serviços.
    USO:
        sc [comando] [nome do serviço] ...

        A opção tem a forma "\\ ServerName"
        Mais ajuda sobre os comandos podem ser obtidas digitando: "sc [comando]"
        comandos:
          consulta ----------- Consulta o status de um serviço, ou
                          enumera o status para os tipos de serviços.
          queryex --------- Consulta o status estendido para um serviço, ou
                          enumera o status para os tipos de serviços.
          iniciar ----------- Inicia um serviço.
          pausar ----------- Envia uma solicitação de controle PAUSE para um serviço.
          interrogar ----- Envia uma solicitação de controle INTERROGATE a um serviço.
          continuar -------- Envia uma solicitação de controle CONTINUE a um serviço.
          parar ------------ Envia uma solicitação Stop para um serviço.
          configuração ---------- Muda a configuração de um serviço (persistente).
          A inscrição ----- Altera a descrição de um serviço.
          falha --------- Altera as ações tomadas por um serviço em caso de falha.
          qc -------------- Consulta as informações de configuração para um serviço.
          qdescription ---- Consulta a descrição de um serviço.
          qfailure -------- Consulta as ações tomadas por um serviço em caso de falha.
          excluir ---------- Exclui um serviço (a partir do registro).
          criar ---------- Cria um serviço. (Adiciona-lo para o registro).
          controle --------- Envia um controle para um serviço.
          sdshow ---------- Exibe descritor de segurança do serviço.
          sdset ----------- Define descritor de segurança do serviço.
          GetDisplayName - Obtém o DisplayName para um serviço.
          Getkeyname ------ Obtém o ServiceKeyName para um serviço.
          Enumdepend ------ Enumera Serviço de Dependências.

        Os seguintes comandos não requerem um nome de serviço:
        sc   
          inicialização ------------ (ok | ruim) Indica se a última inicialização deve
                          ser guardado como a última conhecido bom configuração de inicialização
          Bloquear ------------ Bloqueia o banco de dados de serviço
          QueryLock ------- Consulta o LockStatus para o banco de dados SCMANAGER
    EXEMPLO:
        sc start MyService
Respondeu 03/11/2008 em 19:03
fonte usuário

votos
3

Tal como acontece com a maioria das coisas "consciente" no Windows, a resposta é "Registro".

Dê uma olhada neste artigo Microsoft Knowledge Base: http://support.microsoft.com/kb/103000

Procurar "um programa Win32 que pode ser iniciado pelo Service Controller e que obedece ao protocolo de controle de serviço." Este é o tipo de serviço que você está interessado.

O registo do serviço (conteúdo de KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ myservice) carrega informações sobre o serviço, incluindo coisas como sua localização executável, o que fazer quando ele falhar (parar o OS?), Que serviços devem ser iniciados antes deste , o usuário é executado como.

Quanto ao serviço de protocolo de controle, main () do seu programa é suposto para invocar uma chamada API do Windows, configuração de chamadas de retorno para arrancar, parar, pausar para o seu serviço. O que você faz nessas chamadas de retorno é tudo até você.

Respondeu 29/08/2008 em 16:00
fonte usuário

votos
0

Você pode usar srvany.exe do Windows NT Resource Kit para criar um serviço definido pelo usuário que aparecerá nas ferramentas de administração ...

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

Eu estou usando esse método para executar tracd (a python script / servidor) para trac.

Aqui estão algumas instruções muito claras: http://www.tacktech.com/display.cfm?ttid=197

Ele requer alguma edição do registro (muito mínima e fácil), mas irá permitir que você faça qualquer linha de comando / script um serviço do Windows.

Respondeu 29/08/2008 em 16:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more