[OK]Lancer un exe en tant que service => taskschd.msc

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

[OK]Lancer un exe en tant que service => taskschd.msc

Message par Ar-S »

Salut,

Je suis en train de créer un logiciel type : surveillance d'URL pour un client. Celui ci est déjà bien avancé.
Je voudrai cependant créer un "install" qui
1 - Copie l'exe dans le dossier %appdata% Local (ça c'est facile)
2 - Qui crée un service windows lançant ce programme au démarrage du pc

J'ai bien essayé de passer par le registre pour créer le service (HKLM\SYSTEM\CurrentControlSet\Services)

Code : Tout sélectionner

    RegCreateKeyValue(Cle$,"Description","Prog surveillance URL",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"DisplayName","Mon Prog",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"ErrorControl","1",#REG_DWORD,".")
    RegCreateKeyValue(Cle$,"ImagePath",Chr(34)+Path$+"Prog.exe"+Chr(34),#REG_EXPAND_SZ,".")
    RegCreateKeyValue(Cle$,"ObjectName","LocalSystem",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"Start","2",#REG_DWORD,".")
    RegCreateKeyValue(Cle$,"Type","16",#REG_DWORD,".")
Ce qui fonctionne car il apparaît bien dans la liste des services via services.msc.
MAIS le service ne démarre pas. Et si je clique sur "Démarrer le service", le PC brasse mais échoue en me disant que le service met trop de temps à démarrer.

Bref je me dis que ce n'est pas si simple.
J'ai fouiné sur différents topics : https://www.purebasic.fr/french/viewtop ... t=services ou https://www.purebasic.fr/english/viewto ... =5&t=71635 voir même ici : https://f-lefevre.developpez.com/tutori ... e-windows/
Mais je pipe pas grand chose sur comment l'utiliser dans mon cas.

Je précise que mon soft n'a pas besoin d'outrepasser les droits admin, je veux seulement que l'utilisateur ne puisse pas inhiber le prog si j’utilisais un simple lancement d'appli au démarrage.

Avis aux connaisseurs.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Lancer un exe en tant que service windows

Message par cage »

Bonsoir Ar-S,

Dans Compiler Options : Executable format: Console

Un service Windows n'a pas d'interface utilisateur.

C'est peut-être ça.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Lancer un exe en tant que service windows

Message par Marc56 »

Alternative:

Beaucoup d'installeurs (même InnoSetup) se servent de SC.EXE (en fenêtre cachée) pour installer un service

Code : Tout sélectionner

C:\>sc create /?
DESCRIPTION :
        Crée une entrée de service dans le Registre et la base de données
        des services.
UTILISATION :
        sc <serveur> create [nom service] [CheminBin= ] <option1> <option2>...

OPTIONS :
REMARQUE : le nom d’option contient le signe égal.
      Un espace est nécessaire entre le signe égal et la valeur.\r
 type= <own|share|interact|kernel|filesys|rec|userown|usershare>
       (par défaut = own)
 start= <boot|system|auto|demand|disabled|delayed-auto>
       (par défaut = demand)
 error= <normal|severe|critical|ignore>
       (par défaut = normal)
 binPath= <NomCheminAccèsBinaire au fichier .exe>
 group= <GroupeOrdreChargement>
 tag= <yes|no>
 depend= <Dépendances (séparées par / (barre oblique))>
 obj= <NomCompte|NomObjet>
       (par défaut = LocalSystem)
 DisplayName= <nom complet>
 password= <mot de passe>
Puis SC start ...

Autre-chose: Quand un programme qui tourne en tâche de fond n'a pas besoin d'être arrêté proprement, il est plus simple de le lancer pas le planificateur de tâches (taskschd.msc en GUI ou SchTasks.exe en ligne de commandes)
Le programme peut être lancé selon plusieurs options (lancement de Windows, ouverture de session etc (voir onglet 2) et avec un utilisateur pas nécessairement admin ni système.

Et comme indiqué par Cage, il doit être compilé en mode Console (mais on peut lui demander d'ouvrir un programme en mode interactif)
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Lancer un exe en tant que service windows

Message par Ar-S »

Merci pour vos réponses.
@Marc. Ma 1ère tentative était celle ci mais je n'ai pas réussi à lancer le service via un runprogram (cmd etc etc)
@Cage
Fichier 1 : prog.exe : monde console
Fichier 2 : prog2.exe : le prog principal
Fichier 3 : Install.exe

prog.exe ne contient que ceci

Code : Tout sélectionner

GO = RunProgram(GetCurrentDirectory()+"prog2.exe","" , "")
Ainsi cet exe en mode console est censé lancer l'exe principale prog2.exe. (Ce qui marche en le testant directement via double clic.)

Voilà ce que fait Install.exe :

Code : Tout sélectionner

1 copie de prog.exe dans Path$
2 copie de prog2.exe dans Path$
3 insertion des clés dans regedit pour que le service ne lance que prog.exe
 RegCreateKeyValue(Cle$,"Description","Prog surveillance URL",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"DisplayName","Mon Prog",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"ErrorControl","1",#REG_DWORD,".")
    RegCreateKeyValue(Cle$,"ImagePath",Chr(34)+Path$+"prog.exe"+Chr(34),#REG_EXPAND_SZ,".")
    RegCreateKeyValue(Cle$,"ObjectName","LocalSystem",#REG_SZ,".")
    RegCreateKeyValue(Cle$,"Start","2",#REG_DWORD,".")
    RegCreateKeyValue(Cle$,"Type","16",#REG_DWORD,".")
Je redémarre le PC,
Le service est bien présent mais il ne démarre pas. Même message si je le lance manuellement. => "le service met trop de temps à démarrer" blabla sa mèregrand

ça me pompe :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Lancer un exe en tant que service windows

Message par Ar-S »

Bon, après avoir testé à de multiple reprises les SC Create sans succès, j'ai abandonné les services pour les tâches via taskschd.msc
C'est nickel. :D
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: [OK]Lancer un exe en tant que service => taskschd.msc

Message par cage »

Bonsoir Ar-S,

Je ne suis pas un très bon codeur, pourtant j'ai réussi a créer des services Windows fiables en me basant sur des exemples fournis sur ce forum.

Un exemple assez abouti ici

Je suis parti du source de Pierre Bellisle pour arriver a mes fins.
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [OK]Lancer un exe en tant que service => taskschd.msc

Message par Ar-S »

J'avais lu aussi ce topic. Je ne sais pas ou je me suis planté mais tant pis. Franchement les taches planifiés ça le fait bien aussi pour mes besoins.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre