2010-11-23 9 views
1

Je veux faire une application en C++ qui s'exécutera périodiquement. un peu comme un service Windows. Est-il possible de créer un service Windows en C++. Si oui comment?windows service en C++

Un tutoriel pour cela?

EDIT: Comment créer un programme d'installation pour le service Windows?

Répondre

2

Comme indiqué dans une autre réponse, vous devez créer un programme normal C++ (en commençant par main), et appelez StartServiceCtrlDispatcher API Win32 pour dire Windows vous voulez exécuter ce programme en tant que service. Quelques informations sur le this function can be found in MSDN.

De plus, vous aurez besoin d'un mécanisme pour installer votre service afin qu'il apparaisse dans le Panneau de configuration du service Windows. Et bien sûr, une fonctionnalité désinstaller devrait également être fournie. En règle générale, toutes les trois fonctions (à savoir, installer, désinstaller et exécuter) sont gérées dans un seul exécutable. La différence entre ces trois est indiquée par des paramètres de ligne de commande.

Vous n'avez pas indiqué quelle version de VC++ vous utilisez. Si vous utilisez du code managé .NET, il est assez facile d'intégrer le modèle de service Windows dans Visual Studio. Cependant, si vous utilisez VC++ 6 (ou code non géré à 100%), vous devez connaître beaucoup de détails de bas niveau. D'autres choix dépendent de votre savoir-faire de ATL ou MFC (si vous allez avec des versions plus anciennes du compilateur/runtime). Ceci peut être un bon tutoriel sur creating Windows Services using C++.

+0

Voici quelques bons articles à ce sujet. 1.http: //msdn.microsoft.com/en-us/library/ms685967%28VS.85%29.aspx 2.devx.com/cplus/Article/9857/1954 – sid

+0

comment puis-je créer un programme d'installation pour le service Windows ? – sid

+0

@syd, cela dépend du programme d'installation que vous voulez utiliser. Si vous allez au strict minimum, l'installation en ligne de commande d'un service individuel est très simple. – Jaywalker

2

C++ est suffisamment compatible avec C pour que les approches traditionnelles fonctionnent. Vous générez l'application en tant que programme C++ normal (commençant par main); Au démarrage, vous appelez StartServiceCtrlDispatcher pour informer le système d'exploitation que votre programme peut s'exécuter en tant que service. Windows ne se soucie pas que vous utilisiez des classes en interne.

0

Bien sûr, c'est possible. Non seulement possible, mais c'est ce à quoi l'API native est destinée (enfin, C vraiment, mais assez proche).

Voir Jeff livre de Richter « côté programmation serveur Applications pour Windows 2000 »