begin process at 2010 02 10 05:52:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

creer et lancer un service windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

creer et lancer un service windows

lundi 6 mars 2006 à 21:30:37 | creer et lancer un service windows

Cybernus

Bonjour à toutes et à tous :)

J'ai à nouveau besoin de votre aide et de vos conseils avisés.
Je cherche a creer un service a partir d'un executable exterieur à un programme, comme le ferait sc.exe, présent sur windows XP.

J'ai beau chercher, la plupart des exemples disponibles cree un service:
- soit codé directement dans le programme, le service n'est qu'un "morceau de code" qui tourne
- soit appliqué sur un executable choisi, comme dans l'exemple d'Arnotic, présent sur ce site.

j'ai essayé différents exemples, j'en suis arrivé finalement au code suivant, mais l'erreur est toujours la meme:
le service est bien crée, mais impossible de le lancer.
si on tente de le lancer depuis le gestionnaire de service windows, on rencontre une joyeuse messagebox qui nous dit:
"impossible de demarrer le service X sur Ordinateur Local
Erreur 1053: le service n'a pas répondu assez vite a la demande de lancement ou de controle"

int NewService(char* displayedname, char* name, char* path)
{
  SC_HANDLE Service;
  SC_HANDLE consoleSCManager;

  consoleSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); 
  if(NULL == consoleSCManager) {
      printf("erreur lors de l'ouverture du Service Manager\n");
      return 1;
  }
  Service = CreateService(
    consoleSCManager,
    displayedname,        
    name,                  
    SERVICE_ALL_ACCESS,
    SERVICE_WIN32_OWN_PROCESS,
    SERVICE_DEMAND_START,  
    SERVICE_ERROR_NORMAL,
    path,
    NULL, NULL, NULL, NULL, NULL);

  if(Service == NULL)  {
      printf("Impossible de créer le service\n");
  }
  CloseServiceHandle(Service);
  CloseServiceHandle(schSCManager);
  return 0;
}

:(
mardi 7 mars 2006 à 09:02:29 | Re : creer et lancer un service windows

yoyo269

Membre Club
Tu pourrais m'expliquer ce qu'est un service, parce que ça à l'air très intéressant et utile ?
Merci d'avance.

YOYO, @+.
YOYO
mardi 7 mars 2006 à 13:05:24 | Re : creer et lancer un service windows

Cybernus

on trouve des explications partout sur le net.
ici par exemple:
http://www.itrmanager.com/46119-dossier,bien,gerer,services,windows,1ere,partie.html

:)

mardi 7 mars 2006 à 18:15:23 | Re : creer et lancer un service windows

yserver

Réponse acceptée !
Je croix qu'il y a tout dans une de mes sources : explication et exemple
http://www.cppfrance.com/codes/SERVICE-WINDOWS-POUR-MAINTENIR-CONNEXION-INTERNET_27660.aspx

La il te manque pas mal de chose dans ta source. Soit tu n'a pas mis tout le code soit il faut que tu revoit le principe de fonctionnement d'un service.
En quelque mot, tout ce que tu a fait la c'est de creer une entrer dans la base de registre. Il manque 2 choses principales:
  1. //---------------------------------------------------------------------------
  2. //Fonction de control de l'état du service
  3. void WINAPI ServiceCtrlHandler(DWORD Opcode)
et
  1. //---------------------------------------------------------------------------
  2. //Fontion principal où se situe le code que le service execute
  3. void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)

A l'époque j'avais trouver de nombreux site d'inforamtion a ce sujet mais apres de longue (tres longue) recherche. Tout ce que j'ai trouvé etait en anglais.
Rapidement j'ai trouvé cela [ Lien ] qui a l'air pertinant

*********************

Introduction

A Windows service is an EXE specially designed to communicate with the SCM (Service Control Manager) of Windows NT/2000. The Service Control Manager (SCM) maintains a database of installed services and driver services, and provides a unified and secure means of controlling them. SCM is started at system boot and it is a remote procedure call (RPC) server. As a developer to try a simple service, we can divide the program into four parts.

  1. Main program of Win32 / Console Application.
  2. A so called ServiceMain(), main program of Service. Entry point of a service.
  3. A Service Control Handler, a function to communicate with SCM.
  4. A Service Installer/ Uninstaller, to register an EXE as a Service.

*********************

Bon courrage

mercredi 8 mars 2006 à 00:14:45 | Re : creer et lancer un service windows

Cybernus

Donc, si je veux que mon service se résume a lancer un executable passé en argument a la fonction, je dois quand meme creer tout ceci ?
Je suppose que je dois alors le lancer depuis la ServiceMain, avec un ShellExecute, un CreateProcess ou une API dans le genre, c'est bien cela ?


mercredi 8 mars 2006 à 06:30:35 | Re : creer et lancer un service windows

yserver

Oui c'est ca.


Cette discussion est classée dans : windows, lancer, service, sc, consolescmanager


Répondre à ce message

Sujets en rapport avec ce message

installation de postgreSQL [ par sapsap2 ] bonjour,j'essai d'installer postgreSQl; version windows; mais à chaque fois j'ai de message:"Le service 'Secondary Logon ' n'est pas pas en cours d'ex Comment lancer son appli (VC++6) en tant que service windows? [ par tad20 ] Tout est ds le titremon appli est serveur développer en VC6 mais je ne sais pas comment le déclarer en tant que service windows! Merci Lancer une appli par un service windows [ par jayjay9531 ] Bonjour,J'ai un petit problème avec le service windows que j'ai créé. Il fonctionne bien mais j'ai besoin qu'il lance une applcation, j'utilise :#incl Service Windows [ par Ombitious_Developper ] Salut :Comment peut-on créer un service WINDOWS en C/C++?Je veux créer un programme qui s'exécute en arrière plan.Et Merci ... Installation d'un service windows [ par TheGorgo ] Bonjour,Je cherche a créer un setup pour mon projet. Mon projet est un service windows. Ce que j'aimerais, c'est qu'a la fin de l'installation, le pro question sur service windows [ par deck_bsd ] Bonjour/bonsoir à tous,Voila une petite question qui à mon avis n'en est pas une :DVoila en faite je crée un service et pour cela j'ai créer un projet Keylogger en tant que service windows ? [ par HeavenForsaker ] Bonjour,Pour programmer un keylogger qui pompe le moins de ressources possible et qui se fait le plus discret possible est ce une bonne idée de le met Lancer un processus sous windows avec le nom d'utilisateur SYSTEM [ par logant83 ] Bonsoir, voila alors j'aimerai pouvoir lancer ma base MySQL quand je lance mon programme mais pour ce faire faut que je le mette dans les processus ma Hook incompatible avec service windows ? [ par HeavenForsaker ] J'ai codé un hook qui fonctionne quand on lance la fonction SetWindowsHookEx() depuis un exécutable (l'exécutable charge la DLL par la suite). Ensuite conseil avant de se lancer dans l'e API windows [ par creepx ] bonjours,je voulais demander au personnes qui connaisse bien l'API windows et language caprés avoir fais un tour sur le c et que j'aimerais maintenant


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales