Comment faire une application de service Windows pour qu'elle fonctionne aussi comme un programme autonome?

Je vais commencer par un exemple: serveur web Apache (sous Windows) a une fonctionnalité intéressante: il peut être à la fois l'exécuter comme une application autonome (avec courant de privilèges aux utilisateurs), et qu'il peut être installé et exécuté en tant que service windows directement (en tant que compte système local), en utilisant le même exécutable.

Pour l'application de s'exécuter comme une application autonome, tout ce qu'il faut faire, c'est le long des lignes d'avoir public static Main() dans certains publiques de classe.

Pour application installable et praticable en tant que service, il doit mettre en œuvre ServiceBase et Installer classes chez certains. Mais, si l'application comme cela est exécuté en tant qu'application autonome, il va afficher la zone de message.

Comment cela peut-il "Apache" comme mode de fonctionnement? Je crois que la solution est simple, mais je n'ai pas vraiment une idée par où commencer.

Morceau de code qui suit est utilisé pour appeler le service. Peut-il être modifié pour permettre l'utilisation autonome?

static class Program
{
    ///<summary>
    ///The main entry point for the application.
    ///</summary>
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
            new Service() //defined elsewhere as Service : ServiceBase
        };
        ServiceBase.Run(ServicesToRun);
    }
}

Mon langage de prédilection est le C#.

Edit: Actuellement, j'ai une abstraction de code commune distincte de l'assemblée (appelons-la Library.dll), et j'ai deux exécutables: Console.exe et Service.exe qui sont autonomes et des applications de service windows, respectivement, et les deux sont juste des moyens à l'invocation de Library.dll.

Mon but est de fusionner ces deux exécutables dans un, qui va encore appel à Library.dll.

source d'informationauteur mr.b