Académique Documents
Professionnel Documents
Culture Documents
NET
Services Windows
15:35:53
Caractéristiques
Application qui est installée comme service. Le fichier exécutable (.exe) doit d’abord être
installé sur le serveur pour qu’il puisse fonctionner de manière utile.
Application qui s’exécute pendant une longue durée. Elle interroge ou surveille généralement
quelque chose dans le système.
N’affiche aucune interface utilisateur et n’interfère pas avec d’autres utilisateurs travaillant
sur le même ordinateur.
Un service Windows peut s'exécuter dans le contexte de sécurité d’un compte d’utilisateur
spécifique (différent de l’utilisateur connecté ou du compte d’ordinateur par défaut)
La méthode Main de l’application de service Windows doit émettre la commande Run pour
les services contenus dans le projet. La méthode Run charge les services dans le Gestionnaire
de contrôle des services sur le serveur approprié.
namespace MonPremierServiceWindows
{
public partial class MonPremierServiceWindows : ServiceBase
{
public MonPremierServiceWindows()
{
InitializeComponent();
}
namespace MonPremierServiceWindows
{
static class Program
{
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MonPremierServiceWindows()
};
ServiceBase.Run(ServicesToRun);
}
}
}
15:35:54
Ajout de fonctionnalités au service
Ajout d’un journal des événements personnalisé au service Windows.
Clic-droit sur le nom de la classe et on choisit « Concepteur de vues ».
Attention ! Les journaux des événements ne sont en aucune façon associés aux services
Windows. Dans ce cas-ci, le composant EventLog est utilisé comme un exemple du type de
composants que vous pouvez ajouter à un service Windows.
15:35:54
Ajout de fonctionnalités au service
15:35:54
Ajout de fonctionnalités au service
L’ajout du composant EventLog a ajouté automatiquement du code dans votre
classe MonPremierServiceWindows.designer.cs. Sinon ajoutez le code dans le
constructeur manuellement.
((System.ComponentModel.ISupportInitialize)
(this.eventLog1)).BeginInit();
//
// MonPremierServiceWindows
//
this.ServiceName = "MonPremierServiceWindows";
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
#endregion
}
15:35:55
Définir les actions à effectuer lors du démarrage du service
La méthode OnStart doit retourner au système d'exploitation dès que le service est
en cours d'exécution. Elle ne doit pas s'exécuter indéfiniment en boucle ni se
bloquer. 15:35:55
Définir les actions à effectuer lors du démarrage du service
Pour définir un mécanisme d'interrogation simple, on peut utiliser le composant
System.Timers.Timer comme suit :
Dans la méthode OnStart, on définit des paramètres sur le composant, puis on affecte à la
propriété Enabled la valeur true. La minuterie déclenche périodiquement des événements dans le
code, lesquels indiquent au service qu'il peut effectuer son traitement.
15:35:55
Définir les actions à effectuer lors du démarrage du service
Ajoutez une variable membre à la classe. Elle contient l’identificateur de l’événement suivant à
écrire dans le journal des événements : private int eventId = 1;
15:35:55
Définir les actions à effectuer lors de l'arrêt du service
La méthode OnStop() s'exécute lorsqu'une commande Arrêter est envoyée au service par le Gestionnaire de
contrôle des services (SCM).
Lorsque le SCM reçoit une commande d’arrêt, il utilise la valeur de CanStop pour vérifier si le service accepte
cette commande.
Si CanStop est true, la commande d’arrêt est transmise au service et la méthode OnStop est appelée si elle est
définie. Si OnStop n’est pas implémentée dans le service, le SCM gère la commande d’arrêt.
Si CanStop est false, le SCM ignore la commande d’arrêt. Il n’est pas transmis au service. La commande
d’arrêt retourne et lève une exception.
La méthode OnPause() est à utiliser pour spécifier le traitement qui se produit lorsque le service reçoit une
commande de suspension.
la méthode OnContinue() s'exécute lorsqu'une commande Continuer est envoyée au service par le Gestionnaire de
contrôle des services (SCM). Elle spécifie les actions à effectuer lorsqu'un service reprend son fonctionnement normal
après avoir été suspendu.
Les méthodes OnPause() et OnContinue() sont à implémenter lorsque la propriété CanPauseAndContinue est true.
Paramètres
NomServeur
Facultatif. Spécifie le nom du serveur lorsque vous souhaitez exécuter les commandes sur un ordinateur
distant. Le nom doit commencer par deux barres obliques inverses (par exemple, \\monserveur). Pour
exécuter Sc.exe sur l'ordinateur local, ne spécifiez pas ce paramètre.
Commande
Spécifie la commande sc. Notez qu'un grand nombre des commandes sc requièrent des privilèges
d'administration sur l'ordinateur spécifié. Sc.exe prend en charge beaucoup de commandes en particulier :
Continue
Envoie une requête de contrôle Continue à un service.
Create
Crée un service (l'ajoute au Registre).
Delete
Supprime un service (du Registre).
15:35:56
Installation d’un service Windows
Aide sur la commande Create de l’utilitaire SC
15:35:56
Installation d’un service Windows
Création d’un service nommé «MonPremierServiceWindows» qui exécute le programme "C:\temp\
MonPremierServiceWindows.exe" avec un démarrage automatique.
15:35:56
Installation d’un service Windows
Démarrage du service
15:35:56
Installation d’un service Windows
Journal des événements
15:35:56