Question

Dans une autre question J'ai posté hier, j'ai eu de très bons conseils sur la façon Python script peut être exécuté comme un service Windows.Ce que je vais vous demander est:Comment est Windows au courant des services qui peuvent être gérés dans les outils natifs (les"services" de la fenêtre dans "outils d'administration").I.e.quel est l'équivalent Windows de mettre une start/stop script dans /etc/init.d sous Linux?

Était-ce utile?

La solution

Comme la plupart des "conscient" des choses dans Windows, la réponse est "Registre".

Jetez un oeil à cet article Base de Connaissances Microsoft: http://support.microsoft.com/kb/103000

La recherche d'Une "Win32 programme qui sera lancé par le Contrôleur de Service et qui obéit au service de protocole de contrôle." C'est le genre de service qui vous intéresse.

L'inscription au service (contenu de KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice) contient de l'information sur le service, y compris des choses comme sa exécutable de l'emplacement, de quoi faire lorsqu'il échoue (arrêt du système d'exploitation?), quels sont les services que doit être commencé avant que celui-ci, ce que l'utilisateur il s'exécute.

Comme pour le service de protocole de contrôle, main() de votre programme est censé invoquer un appel API de Windows, configurer des rappels pour démarrer, arrêter, suspendre pour votre service.Ce que vous faites dans ces rappels est tout à vous.

Autres conseils

Voici le code pour installer python-script en tant que service, écrit en python :)

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

Ce post pourrait aussi vous aider:

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

Ne pas le fumier directement avec le registre.L'utilisateur de la SC outil de ligne de commande.À savoir, SC CRÉER

    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

Vous pouvez utiliser srvany.exe à partir de Kit de Ressources Windows NT pour créer un utilisateur de service définis que dans les outils d'administration...

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

J'utilise cette méthode pour exécuter tracd (un script python / serveur) pour trac.

Voici quelques instructions très claires: http://www.tacktech.com/display.cfm?ttid=197

Il exige une certaine modification du registre (très minime et facile) mais qui vous permettra de faire toutes les lignes de commande / script un service windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top