Come faccio a fare in modo che Windows a conoscenza di un servizio che ho scritto in Python?

StackOverflow https://stackoverflow.com/questions/34328

  •  09-06-2019
  •  | 
  •  

Domanda

In un'altra domanda Ho postato ieri, ho ricevuto ottimi consigli su come uno script Python può essere eseguito come servizio di Windows.Quello che mi chiedo è:Come è che Windows sia a conoscenza dei servizi che possono essere gestiti con gli strumenti nativi (i"servizi" finestra "strumenti di amministrazione").I.e.che cosa è l'equivalente di Windows di mettere una start/stop script in /etc/init.d sotto Linux?

È stato utile?

Soluzione

Come con la maggior parte dei "consapevoli" le cose in Windows, la risposta è "Registro di sistema".

Date un'occhiata a questo articolo della Microsoft Knowledge Base: http://support.microsoft.com/kb/103000

Ricerca di "Un programma Win32 che può essere attivato con il Controller del Servizio e che obbedisce al servizio di protocollo di controllo." Questo è il tipo di servizio a cui sei interessato.

Il servizio di registrazione (contenuto di KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice) trasporta informazioni circa il servizio, tra cui cose come il suo eseguibile posizione, cosa fare in caso di errore (arresta il sistema operativo?), quali servizi deve essere avviato prima di questo, che l'utente utilizza.

Come per il servizio di protocollo di controllo, main() del programma dovrebbe richiamare una chiamata API di Windows, l'impostazione di callback per avviare, arrestare, mettere in pausa per il vostro servizio.Cosa fare in quelle richiamate è tutto a voi.

Altri suggerimenti

Ecco il codice per installare python-script come servizio, scritto in python :)

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

Questo post potrebbe anche aiutare fuori:

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

Non muck con il registro di sistema direttamente.Utente SC strumento della riga di comando.Cioè, SC CREARE

    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

È possibile utilizzare srvany.exe dal Resource Kit di Windows NT per creare un utente definito il servizio che verrà mostrato nella finestra strumenti di amministrazione...

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

Sto usando questo metodo per eseguire tracd (python script / server) per trac.

Qui ci sono alcune istruzioni molto chiare: http://www.tacktech.com/display.cfm?ttid=197

Non necessita di qualche modifica del registro di sistema (molto minimale e semplice), ma vi permetterà di fare qualsiasi riga di comando / script un servizio di windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top