OVH Cloud OVH Cloud

Lancer un service après le winlogon

4 réponses
Avatar
Galileo
Bonjour,
Je voudrais pouvoir lancer une application automatiquement, juste après le
winlogon d'un utilisateur,
et qu'elle se termine lors avec un logoff.
Par contre je ne veux pas que l'utilisateur ait le droit de tuer le process
correspondant à l'application.
Est-ce qu'il y a une solution autre que lancer l'application comme un
service Windows ?

Merci de votre aide.

4 réponses

Avatar
Christian ASTOR
Galileo wrote:
Je voudrais pouvoir lancer une application automatiquement, juste après le
winlogon d'un utilisateur,
et qu'elle se termine lors avec un logoff.
Par contre je ne veux pas que l'utilisateur ait le droit de tuer le process
correspondant à l'application.
Est-ce qu'il y a une solution autre que lancer l'application comme un
service Windows ?



Logon, pas Winlogon...
Les clés "Run" se lancent après le Logon, les clés "RunServices" avant.
Enlever PROCESS_TERMINATE si on veut empêcher un kill de base
(TerminateProcess() par Task Manager) (par un utilisateur de base, donc
pas de SE_DEBUG_NAME) pour n'importe quelle appli.
Avatar
Galileo
Merci Christian.
Est-ce que je peux à la fois trapper PROCESS_TERMINATE et être sur de
pouvoir fermer "proprement" l'application (fichiers ouverts, flush des
buffers, etc...) si une fermeture de Windows se produit pendant la session ?
Lors d'une fermeture de Windows, est-ce que d'autres signaux que
PROCESS_TERMINATE sont envoyés aux applications, avec attente de la réponse
?
En gros, je veux empêcher l'utilisateur de fermer l'application, mais que le
système puisse continuer à la fermer normalement, et non pas uniquement de
manière "brutale".
Avatar
Christian ASTOR
Galileo wrote:

Est-ce que je peux à la fois trapper PROCESS_TERMINATE et être sur de
pouvoir fermer "proprement" l'application (fichiers ouverts, flush des
buffers, etc...) si une fermeture de Windows se produit pendant la session ?
Lors d'une fermeture de Windows, est-ce que d'autres signaux que
PROCESS_TERMINATE sont envoyés aux applications, avec attente de la réponse
?
En gros, je veux empêcher l'utilisateur de fermer l'application, mais que le
système puisse continuer à la fermer normalement, et non pas uniquement de
manière "brutale".



PROCESS_TERMINATE n'est pas un signal (WM_QUERYENDSESSION est un des
signaux de fin de session), c'est un droit d'accès.
(mais SE_DEBUG_NAME a été rajouté depuis XP pour le TaskMgr (Admin))
On peut aussi cacher le process, mais + difficle sous NT/2K/...
Sinon hook API, difficile "from scratch", pas trop avec tout ce qu'il y
a sur le Web...
Avatar
Thierry
[Copie en courrier vu la date du message]

Bonjour,

Galileo a écrit :

Bonjour,
Je voudrais pouvoir lancer une application automatiquement, juste
après le winlogon d'un utilisateur,
et qu'elle se termine lors avec un logoff.
Par contre je ne veux pas que l'utilisateur ait le droit de tuer le
process correspondant à l'application.
Est-ce qu'il y a une solution autre que lancer l'application comme un
service Windows ?



Regarde du cote de Winlogon notify : tu t'"enregistres" via la BDR aupres
de winlogon pour recevoir des evanements (logon, logoff, screensave, ...)
Y'a un sample sur codeproject qui fait exactement ce que tu veux :
http://www.codeproject.com/system/winlogon_notification_package.asp
De mémoire ca ressemble beaucoup au sample du MSDN.
Le processus ne pourra pas être buté par l'utilisateur, puisque lancé par
le système... (sauf avec droits admin).

--
« Always look at the bright side of the life... »