|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Bonjour, j'espère que c'est le bon forum pour poster ma requête
Alors voila, mon problème est le suivant : J'ai réussi à convertir une application en service grâce à instsrv et srvany, j'effectue la configuration qu'il faut dans la base de registres et au niveau des services (Panneau de configuration->Outils d'administration->Services, mis sur automatique, interaction avec le desktop, LocalSystem, etc...). Je redémarre, je me loggue, le service srvany se lance bien ainsi donc que mon application, tout va pour le mieux. MAIS VOILA le problème, quand je me déconnecte, et que je me reconnecte, srvany.exe est bien dans le gestionnaire des tâches/Processus, mais mon application qui devrait être lancée ne l'est plus. Elle a été "tuée". Je redémarre l'ordi, et ça refonctionne, le hic c'est qu'il faudrait que cela puisse tourner tout le temps en "tâche" de fond, même quand il y a un utilisateur connecté ou non. Existerait-il un moyen (via la base de registres peut être) d'imposer à ce que mon appli ne soit tuée en fait que lors d'un arrêt de la machine. Pour information j'ai utilisé le tutorial à l'adresse suivante pour effectuer la transformation appli->service : http://bellamyjc.org/fr/windowsnt.html#serviceNT En espérant que je ne vous pose pas une colle trop difficile Merci d'avance. Zocco |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() |
Bonjour,
Tout d'abord, il faut bien se dire qu'un service n'est pas exactement comme un programme. Il est géré différemment (appel d'autres évenements, etc). Donc un programe peut , souvent, mal réagir quand il tourne en tant que service. Maintenant, quand tu vas dans la gestion des services. Ton service est bien configurer pour s'exécuter automatiquement je suppose ? Dans l'onglet "Récupération", indique ce que tu veux que cela fasse lorsqu'il y a une défaillance du service. Voilà, je ne vois pas autre chose. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Bonjour.
Merci beaucoup pour ta réponse portu. J'ai essayé ce que tu m'as conseillé, mais ça n'a pas fonctionné. Le truc c'est que pour mettre en place ce programme en tant que service, je passe par ,comme tu as pu le voir dans le tutoque j'ai mis en lien, la commande système suivante: instsrv TIMER srvany.exe, srvany.exe qui est un .exe qui va permettre de lancer ma vraie appli timer en tant que service (ie c'est un paramètre de lancement de srvany.exe), j'avais essayé instsrv TIMER timer.exe mais cela ne fonctionnait pas, j'avais droit à l'erreur 1053 de windows (n'a pu lancer le service dans le temps imparti). Donc c'est pour ça que je demandais si on ne pouvait pas dans la base de registres correspondante au service, mettre un paramètre (du style Run Parameter) auquel on va dire tout le temps. Peut etre que je m'avance un peu, car je ne connais pas du tout les tenants et aboutissants de la base de registres. |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
Je vois plusieurs causes possibles :
- Ton application ne se ferme pas correctement aprés son traitement, et donc elle n'est pas relancé aprés. - Ton application tournant en tant que service dans une session LocalSystem peut avoir quelques problèmes de droits. Essaye de logguer ce que fait ton appli. Tu verras alors si quelques messages peuvent t'aider. Avant de passer ton application en tant que service, tu n'as pas essayer de la faire tourner avec le planificateur de Taches de Windows ? C'est rudimentaire mais ca permets de faire pas mal de choses. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Bonjour remy_74 et merci pour tes informations.
J'ai donné (comme un bon bourrin) pour voir tous les droits à mon application, toujours le même problème, quand je me loggue e me déloggue l'application liée au service ne s'exécute plus. Ensuite il y a une chose que je n'ai pas saisie dans ce que tu disais : "Ton application ne se ferme pas correctement aprés son traitement, et donc elle n'est pas relancé aprés." L'application n'a pas à se fermer puisque le service continue tout le temps, à moins que je ne m'exprime mal, je veux dire :service lancé au démarrage -> appli appelée par le service et donc lancée , log et délog n'impliquent pas un tuage de l'appli lancée par le service. Ai-je été clair ? |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
oui plus clair
ton appli est censé faire quoi exactement ? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Bonjour.
Excuse je viens de voir ton dernier message seulement maintenant remy_74. Alors mon application est en fait un prog C++ builder, qui a un composant timer (pour pouvoir effectuer des tâches spécifiques à heure fixe, par exemple télécharger des données, générer des fichiers Word, etc...). Mais le futur utilisateur souhaite que l'on passe cette appli (donc le projet.exe) en services windows, car il en avait marre à la main de le relancer, enfin bon le client est roi, c'est pour cela que j'ai posé ma question sur le forum. Cordialement, Zocco. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
Tu as ré-ecris le systeme des taches planifiées windows ??
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
En fait non, je n'ai pas réécrit le système de tâches planifiées de Windows, car l'appli n'a pas été écrite par moi
En plus je pense qu'il y a une différence entre le système des tâches planifiées de Windows et l'appli (déjà il faut lancer l'appli Mon travail consiste "juste" à effectuer ce passage d'applications en service. |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
As tu essayé de faire tourner ton service avec un compte d'utilisateur plutot qu'en localSystem ? J'avoue que je seche un peu..
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Bonjour.
Merci pour ton conseil remy_74, j'ai fait ce que tu avais dit et, il semble que l'appli lancée par le service fonctionne bien quand on se loggue, déloggue et reloggue. Mais du coup il y a plusieurs choses qui m'interrogent : Peut-on la faire (l'application) interagir avec le bureau, pour voir si elle tourne bien, (parce qu'elle apparaît dans la liste des processus, mais qui nous dit qu'elle tourne correctement, mis à part un test pour vois si elle écrit bien des choses) ? Si on a mis le service en mode automatique, mais qu' il est associé à un compte : - va-t-il se lancer au démarrage de l'ordi (et donc l'appli également) - nécessite-il un log sur le compte en question (ce qu'il ne faudrait pas car l'application lancée par le service devrait tourner même si l'utilisateur n'est pas loggué) ? Je sais, je pose des questions du genre, peut-on avoir le beurre, l'argent du beurre et le postérieur de la crémière |
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
Ton service va demarrer tout seul si tu le mets en automatique.
Par contre tu auras des soucis si tu laisse interagir avec le bureau (c'est ton cas actuellement..) Pour ce qui est du log, je vois pas ce que veux faire, mais si c est pour t avertir en cas de probléme il vaux mieux faire que ce soit le service qui genere les avertissements. Soit tu le fait ecrire dans les Journaux windows, soit dans un fichier log. PS: J'ai vu la crémière .. laisse tomber l'affaire .. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
J'ai fait quelques tests et ça a l'air de bien fonctionner :
J'ai mis dans mon code une création d'un fichier texte toutes les 20 secondes, j'ai arrêté le service, redémarré la machine, attendu 5 minutes me suit loggué (c'est ce que je veux dire par logguer) Par contre il reste le dernier point à utiliser, comment faire pour autoriser le service à interagir avec le bureau ? Option accessible quand on utilise le compte LocalSystem pour le service (mais qui tuait mon appli comme je le disais dans les messages précédents), mais hélas inaccessible quand on utilise un compte utilisateur Est-ce possible de le faire (base de registres, options à mettre dans le service avec instsrv, etc ...) ? |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Inscription : avril 2007 Messages : 124 ![]() |
Tu peux essayer de le faire tourner avec ton utilisateur et de modifier la base de registre comme expliqué ici..
http://www.codeproject.com/install/c...select=1420018 J'ai pas essayé... |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Je viens d'essayer mais, hélas cela n'a pas fonctionné. Si jamais tu as une autre idée, je suis preneur
|
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 21 ![]() |
Meric à tous pour votre aide.
Au final, la deuxième solution même si l'on ne peut point faire appraître l'interaction application-bureau, ne fonctionne pas à quand même été retenue. Je marque donc le sujet comme résolu. Merci à tous A bientôt. Zocco |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com