IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Lancement de Service NT


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut Lancement de Service NT
    Bonjour,

    Je suis en train de réaliser un service, pour celà j ai le code ci dessous. Il fonctionne, il j'arrive très bien a démarrer un service en passant en paramètre "-s" ou en tapant "net start monservice" et idem pour arreter. Mais j ai toute fois un problème !
    Quand j'insattle mon service (à laide du paramètre -i) il réussit à l'installer mais il me le lance jamais !!
    Je suis obligé de toujours relance en passant le paramètre "-s" alors qu'en théorie celà revient au même.

    Auriez vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    int _tmain(int argc, _TCHAR* argv[])
    {
       SERVICE_TABLE_ENTRY DispatchTable[] =
       {
          { SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION) ServiceMain},
          { NULL, NULL }
       };
    
       hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
       hService = OpenService(hSCManager,SERVICE_NAME, SERVICE_ALL_ACCESS);
       if(argc == 2) {
         if(_tcscmp(argv[1], TEXT("-u")) == 0)
            MyServiceDelete(SERVICE_NAME);
         if(_tcscmp(argv[1], TEXT("-i")) == 0){
            MyServiceInstall(SERVICE_NAME);
            StartService(hService,0,0);
         }
          if(_tcscmp(argv[1], TEXT("-s")) == 0){
            StartService(hService,0,0);
         }
       }else{
    
         if(hService == NULL) {
            MyServiceInstall(SERVICE_NAME);
            //StartService(hService,0,0);
         }
        
       
        if (StartServiceCtrlDispatcher(DispatchTable) == 0)
         {
            SvcDebugOut(TEXT(" [MY_SERVICE] StartServiceCtrlDispatcher (%d)\n"),
             GetLastError());
         }
    
       }
       CloseServiceHandle(hService);
       CloseServiceHandle(hSCManager);
       return(0);
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ben non, en théorie il n'est pas supposé se lancer automatiquement quand tu l'installes.

    Par contre, le lancer avec -i devrait permettre de le lancer par la suite avec net start...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut
    Pourrais tu préciser pourquoi je ne peux pas executer mon service :
    Si j'implémente cela :http://msdn.microsoft.com/library/de...gram_tasks.asp
    Ne puis je pas lancer mon service ?

    Et dans: http://chgi.developpez.com/windows/services/
    Il parle bien d'une fonction StartService permettant de le démarrer ?!

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ce que je dis, c'est que -i est censé installer le service et ne pas l'exécuter (juste l'installer).
    D'ailleurs, le programme service lui-même n'est pas supposé appeler StartService().

    Par contre, il est censé appeler StartServiceCtrlDispatcher() s'il est lancé en tant que service, et s'il est lancé en tant que programme console, StartServiceCtrlDispatcher() échouera. Le programme aura donc le choix de se lancer hors-service ou de ne pas se lancer du tout.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut
    D'accord mais est ce identique pour arreter le service ?

    En effet, si je veux désinstaller le service alors qu'il est en cours d'execution, celà ne va pas marcher.
    Est ce possible donc que le service n'arrete tout seul si on le désintalle ?
    D'après ce que tu me dit non, mais j'aimerais confirmation...

    Car dans l'idée, j'ai codé un rapide truc ci dessous:

    PS:Joli ton nouveau Pere noel Zelda

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    BOOL MyServiceDelete(LPCTSTR lpszNameService)
    {
        hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        hService = OpenService(
            hSCManager,      
            lpszNameService,
            DELETE);
     
        if (hService == NULL)
        {
            SvcDebugOut(TEXT("OpenService failed (%d)\n"), GetLastError());
            CloseServiceHandle(hSCManager);
            return FALSE;
        }
    
        QueryServiceStatus(hService, &MyServiceStatus);
        if(MyServiceStatus.dwCurrentState != SERVICE_STOPPED) {
            ControlService(hService, SERVICE_CONTROL_STOP, &MyServiceStatus);
            Sleep(500);
        }
    
        if (DeleteService(hService) == 0)
        {
            SvcDebugOut(TEXT("DeleteService failed (%d)\n"), GetLastError());
            CloseServiceHandle(hSCManager);
            return FALSE;
        }
        else
            SvcDebugOut(TEXT("DeleteService succeeded\n"),0);
     
        CloseServiceHandle(hService);
        CloseServiceHandle(hSCManager);
        return TRUE;
    }

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    C'est simple: On n'ordonne pas à un programme service de se désinstaller quand il tourne.
    Il faut l'arrêter d'abord, (avec une fonction C ou en exécutant net stop), puis lui dire de se désinstaller.

Discussions similaires

  1. erreur lors du lancement du service Apache
    Par monthaldo dans le forum Installation
    Réponses: 1
    Dernier message: 14/02/2008, 14h23
  2. Probléme au lancement des Services Oracle
    Par Taoufik109 dans le forum Administration
    Réponses: 6
    Dernier message: 19/10/2007, 14h56
  3. [Win2003 Server]Lancement de services
    Par Jabbal'H dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 11/04/2007, 18h14
  4. Problème de lancement de service
    Par donny dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 04/05/2006, 17h09
  5. lancement du service sql server
    Par lilia dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 08/11/2005, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo