web-dev-qa-db-fra.com

Comment un service Windows diffère-t-il d'une exe standard?

Quelle est la différence entre un service Windows et un exe standard?

42
LearningCSharp

Un service Windows fonctionne toujours une fois que l'ordinateur démarre (aussi longtemps qu'il est configuré). Un EXE standard ne fonctionne que lorsqu'un utilisateur est connecté et s'arrêtera si l'utilisateur se déconnecte.

Vous utiliseriez un service Windows pour des choses qui doivent toujours être exécutées même si personne n'est connecté.

Vous utiliseriez une EXE standard pour les programmes qu'un utilisateur fonctionnera lors de l'inscription.

44
Eric J.

Un service Windows a une fonction spéciale ServiceMain et doit répondre correctement aux commandes de Service Control Manager (SCM) afin d'être fonctionnel en tant que service. D'autre part, un exécutable régulier a une fonction main ou WinMain fonction et n'a pas besoin de répondre à des commandes de contrôle particulières.

35
Greg Hewgill

Si vous parlez de la mise en œuvre d'une opération de base, voici les critères que je recommanderais de choisir un service ou une fenêtre moins de fenêtre:

Choisissez un exe si:

  • Vous en avez besoin pour fonctionner sur une base d'utilisateur et uniquement lorsqu'un utilisateur est connecté
  • Vous en avez besoin pour interagir avec le bureau Windows (icônes de notification, etc.)
  • Il a besoin de tous les privilèges de l'utilisateur connecté (plus non moins)

Choisissez un service si:

  • Il peut être nécessaire de courir lorsque personne n'est connecté
  • Il n'a généralement pas besoin de données par utilisateur ou de privilège
  • Il communique uniquement avec le réseau
  • Il doit exposer de nouveaux objets "sécurisables". Objets qui possèdent leurs propres listes de contrôle d'accès déclaratif (DACL) qui limitent l'accès à certains comptes/groupes.
  • Il faut des autorisations spéciales qui peuvent ne pas être disponibles pour l'utilisateur connecté.

Les services peuvent facilement être des trous de sécurité, donc préfèrent .exe aux services. Parfois, vous aurez besoin des deux. Un vérificateur de virus doit pouvoir accéder à chaque fichier sur le système de fichiers (que l'utilisateur actuel peut ne pas être capable de le faire), mais il doit également fournir des informations à l'utilisateur sous forme de boîte de dialogue de notification/pop-ups et à un outil icône de la barre. Les services ne peuvent pas interagir avec l'interface graphique de l'utilisateur directement. Ils peuvent utiliser les services standard Windows IPC (communication inter-processus) tels que des tuyaux et des régions de mémoire partagée. Ces outils ont généralement un service et une fenêtre sans fenêtre par utilisateur qui communique avec le Service à l'aide de tuyaux Windows ou de régions de mémoire partagées.

Obtenez "Programmer la sécurité de Windows" de Keith Brown si vous voulez plonger dans ces sujets.

12
David Gladfelter