Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancer une application juste avant la fermeture de windows

6 réponses
Avatar
Giques
Bonsoir à tous,

Comment peut-on faire pour lancer automatiquement une apllication à la
fermeture de la session?

Le but du jeux étant de sauver des fichiers de notre serveur sur mon
portable.

Merci de votre aide

Giques

6 réponses

Avatar
Jacques
Dans le message news:43c28926$0$9046$,
Giques a écrit:

Bonsoir à tous,

Bonsoir,



Comment peut-on faire pour lancer automatiquement une apllication à la
fermeture de la session?

Le but du jeux étant de sauver des fichiers de notre serveur sur mon
portable.
La solution est peut être de faire l'inverse: que l'application de

sauvegarde lance l'arrêt quand elle se termine (dans un petit fichier.cmd,
débuter par les ordres de sauvegarde, éventuellement avec le paramètre /wait
puis terminer par la commande d'arrêt logoff).
Voir compléments chez MS (mais en anglais, je ne sais où est la page en
français):
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ts_cmd_logoff.mspx
Le problème est d'être certain qu'il n'y a plus d'utilisateur actif autre
que le portable

Pour arrêter, il suffirait alors de lancer sauve&stop.cmd


Merci de votre aide

Giques


Avatar
Giques
Merci Jacques pour ces infos
Bonne journée
Giques
"Jacques" a écrit dans le message de
news: %
Dans le message news:43c28926$0$9046$,
Giques a écrit:

Bonsoir à tous,

Bonsoir,



Comment peut-on faire pour lancer automatiquement une apllication à la
fermeture de la session?

Le but du jeux étant de sauver des fichiers de notre serveur sur mon
portable.
La solution est peut être de faire l'inverse: que l'application de

sauvegarde lance l'arrêt quand elle se termine (dans un petit fichier.cmd,
débuter par les ordres de sauvegarde, éventuellement avec le paramètre
/wait puis terminer par la commande d'arrêt logoff).
Voir compléments chez MS (mais en anglais, je ne sais où est la page en
français):
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ts_cmd_logoff.mspx
Le problème est d'être certain qu'il n'y a plus d'utilisateur actif autre
que le portable

Pour arrêter, il suffirait alors de lancer sauve&stop.cmd


Merci de votre aide

Giques






Avatar
Jean-Claude BELLAMY
Dans le message :43c28926$0$9046$,
Giques a pris la peine d'écrire ce qui
suit :
Bonsoir à tous,

Comment peut-on faire pour lancer automatiquement une apllication à la
fermeture de la session?

Le but du jeux étant de sauver des fichiers de notre serveur sur mon
portable.


Il existe le très classique "LastChance" (Freeware)
http://www.fileware.com/products.htm#LastChance



Sinon, sous XP PRO, une stratégie locale permet de lancer une appli (exe,
script, ..) en fin de session ou fermeture de Windows.


Lancer GPEDIT.MSC
Sélectionner :
"Configuration ordinateur"
(scripts de démarrage/arrêt)
ou
"Configuration utilisateur"
(scripts d'ouverture/fermeture de session)
puis :
Paramètres Windows
Scripts
Cliquer sur (suivant le cas) :
"démarrage/arrêter"
ou
"ouverture/déconnexion"
et indiquer le chemin des scripts
(ils peuvent être placés n'importe où)

Cela peut aussi se "bidouiller" dans la BDR.
Il n'y a que l'interface qui change (mais c'est un peu plus complexe que
GPEDIT!),

Script à la fermeture de session :
--------------------------------
Clefs concernées :

HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­
On y trouve 5 entrées de type REG_SZ:
"DisplayName"
valeur "Stratégie de groupe locale"
"FileSysPath"
valeur "C:WINDOWSSystem32GroupPolicyUser"
(chemin à adapter à sa config)
"GPO-ID"
valeur "LocalGPO"
"GPOName"
valeur "Stratégie de groupe locale"
"SOM-ID"
valeur "Local"

Ensuite, il y a autant de sous-clefs qu'il y a de scripts ou programmes à
exécuter
(car il peut y en avoir plusieurs, à la différence du script de login dans
le cas d'un domaine)
Le nom de chaque sous-clef est un nombre, exprimé en hexadécimal, commençant
à 0
P.ex.
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­b
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­f
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­11
...
Chaque sous-clef contient 3 entrées :
"ExecTime" de type REG_QWORD (type assez rare, de 8 octets, mais que REGEDIT
affiche de travers sur 16 octets ! J'ai remonté le bug à MS)
valeur : 00 00 00 00 00 00 00 00
"Parameters" de type REG_SZ
valeur : des paramètres éventuels transmis au script
"Script" de type REG_SZ
valeur : le nom du script. Son chemin complet est à indiquer
s'il n'est pas dans
%systemroot%System32GroupPolicyUserScriptsLogoff

De plus, il doit exister un fichier "script.ini" placé dans
%systemroot%System32GroupPolicyUserScripts
Ce script a la structure suivante :
[Logoff]
0CmdLine=test.cmd
0Parameters 1CmdLine=machin.exe
1Parameters 2CmdLine=c:vbstruc.vbs
2Parameters ...

Pour chaque script on a 2 lignes :
"Ncmdline=xxxx" qui donne le nom du script
"NParameters=yyyyy" qui donne les paramètres éventuels
N étant le n° d'ordre du script (0, 1, 2, ..., 11, 12...) en décimal ici

NB: ce fichier script.ini sert aussi pour les scripts à l'ouverture de
session.
Dans ce cas, la section commence par "[Logon]"

Script à la fermeture de Windows :
--------------------------------
On a la même structure que pour la fermeture de session, mais le nom des
clefs est un peu différent

Clefs concernées :
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSystemScriptsShutd­­own
On y trouve les 5 mêmes entrées de type REG_SZ
Seules changent les entrées :
"FileSysPath"
valeur "C:WINDOWSSystem32GroupPolicymachine"
(chemin à adapter à sa config)
"Script" de type REG_SZ
valeur : le nom du script.
Son chemin complet est à indiquer s'il n'est pas dans
%systemroot%System32GroupPolicyMachineScriptsShutdown

Il y a là aussi autant de sous-clefs qu'il y a de scripts ou programmes à
exécuter
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSystemScriptsShutd­­own
...
Les entrées de chaque sous-clef sont les mêmes que pour la fermeture de
session

De plus, il doit exister là aussi un fichier "script.ini" placé dans
%systemroot%System32GroupPolicyMachineScripts
Ce script a la structure suivante :
[Shutdown]
0CmdLine=test.cmd
0Parameters ...
Ce fichier script.ini sert aussi pour les scripts au démarrage de Windows.
Dans ce cas, la section commence par "[Startup]"

NB: je me suis interrogé sur la raison de la présence de ces fichiers
"script.ini", qui font apparement double-emploi avec les données de la BDR.
Cela est du au fait qu'après application des stratégies dans GPEDIT.MSC,
seul le compte en cours voit sa BDR modifiée immédiatement.
Pour que cela s'applique aux autres comptes, c'est le fichier REGISTRY.POL
qui va provoquer ces modifs lors de chaque ouverture de session.
Or j'ai constaté après examen approfondi (en hexadécimal!) de REGISTRY.POL
qu'il n'indiquait qu'un seul script (le 1er, indice 0) et non pas les
suivants.
C'est donc le système qui va à ce moment là compléter éventuellement avec le
contenu de "script.ini"...
Ouf !!!

Si sous XP PRO on passe par GPEDIT, on n'a pas à se préoccuper de tout cela.
C'est seulement si on est sous XP HOME (dans lequel GPEDIT.MSC n'existe pas)
qu'il faudra en tenir compte.

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Giques
Merci Jean-Claude pour ces Infos

Question subsidiaire
Le script lancer à la fermeture peut-il être différent en fonction de
l'utilisateur ?

En fait, il faudrait lancer le script lorsque je me déconnecte du réseau de
la société mais pas lorsque je me déconnecte du réseau privé.

Merci d'avance

Giques

"Jean-Claude BELLAMY" a écrit dans le
message de news: %
Dans le message :43c28926$0$9046$,
Giques a pris la peine d'écrire ce
qui suit :
Bonsoir à tous,

Comment peut-on faire pour lancer automatiquement une apllication à la
fermeture de la session?

Le but du jeux étant de sauver des fichiers de notre serveur sur mon
portable.


Il existe le très classique "LastChance" (Freeware)
http://www.fileware.com/products.htm#LastChance



Sinon, sous XP PRO, une stratégie locale permet de lancer une appli (exe,
script, ..) en fin de session ou fermeture de Windows.


Lancer GPEDIT.MSC
Sélectionner :
"Configuration ordinateur"
(scripts de démarrage/arrêt)
ou
"Configuration utilisateur"
(scripts d'ouverture/fermeture de session)
puis :
Paramètres Windows
Scripts
Cliquer sur (suivant le cas) :
"démarrage/arrêter"
ou
"ouverture/déconnexion"
et indiquer le chemin des scripts
(ils peuvent être placés n'importe où)

Cela peut aussi se "bidouiller" dans la BDR.
Il n'y a que l'interface qui change (mais c'est un peu plus complexe que
GPEDIT!),

Script à la fermeture de session :
--------------------------------
Clefs concernées :

HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­
On y trouve 5 entrées de type REG_SZ:
"DisplayName"
valeur "Stratégie de groupe locale"
"FileSysPath"
valeur "C:WINDOWSSystem32GroupPolicyUser"
(chemin à adapter à sa config)
"GPO-ID"
valeur "LocalGPO"
"GPOName"
valeur "Stratégie de groupe locale"
"SOM-ID"
valeur "Local"

Ensuite, il y a autant de sous-clefs qu'il y a de scripts ou programmes à
exécuter
(car il peut y en avoir plusieurs, à la différence du script de login dans
le cas d'un domaine)
Le nom de chaque sous-clef est un nombre, exprimé en hexadécimal,
commençant à 0
P.ex.
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­b
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­f
HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScriptsLogoff­­11
...
Chaque sous-clef contient 3 entrées :
"ExecTime" de type REG_QWORD (type assez rare, de 8 octets, mais que
REGEDIT
affiche de travers sur 16 octets ! J'ai remonté le bug à MS)
valeur : 00 00 00 00 00 00 00 00
"Parameters" de type REG_SZ
valeur : des paramètres éventuels transmis au script
"Script" de type REG_SZ
valeur : le nom du script. Son chemin complet est à indiquer
s'il n'est pas dans
%systemroot%System32GroupPolicyUserScriptsLogoff

De plus, il doit exister un fichier "script.ini" placé dans
%systemroot%System32GroupPolicyUserScripts
Ce script a la structure suivante :
[Logoff]
0CmdLine=test.cmd
0Parameters > 1CmdLine=machin.exe
1Parameters > 2CmdLine=c:vbstruc.vbs
2Parameters > ...

Pour chaque script on a 2 lignes :
"Ncmdline=xxxx" qui donne le nom du script
"NParameters=yyyyy" qui donne les paramètres éventuels
N étant le n° d'ordre du script (0, 1, 2, ..., 11, 12...) en décimal
ici

NB: ce fichier script.ini sert aussi pour les scripts à l'ouverture de
session.
Dans ce cas, la section commence par "[Logon]"

Script à la fermeture de Windows :
--------------------------------
On a la même structure que pour la fermeture de session, mais le nom des
clefs est un peu différent

Clefs concernées :
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSystemScriptsShutd­­own
On y trouve les 5 mêmes entrées de type REG_SZ
Seules changent les entrées :
"FileSysPath"
valeur "C:WINDOWSSystem32GroupPolicymachine"
(chemin à adapter à sa config)
"Script" de type REG_SZ
valeur : le nom du script.
Son chemin complet est à indiquer s'il n'est pas dans
%systemroot%System32GroupPolicyMachineScriptsShutdown

Il y a là aussi autant de sous-clefs qu'il y a de scripts ou programmes à
exécuter
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSystemScriptsShutd­­own
...
Les entrées de chaque sous-clef sont les mêmes que pour la fermeture de
session

De plus, il doit exister là aussi un fichier "script.ini" placé dans
%systemroot%System32GroupPolicyMachineScripts
Ce script a la structure suivante :
[Shutdown]
0CmdLine=test.cmd
0Parameters > ...
Ce fichier script.ini sert aussi pour les scripts au démarrage de Windows.
Dans ce cas, la section commence par "[Startup]"

NB: je me suis interrogé sur la raison de la présence de ces fichiers
"script.ini", qui font apparement double-emploi avec les données de la
BDR.
Cela est du au fait qu'après application des stratégies dans GPEDIT.MSC,
seul le compte en cours voit sa BDR modifiée immédiatement.
Pour que cela s'applique aux autres comptes, c'est le fichier REGISTRY.POL
qui va provoquer ces modifs lors de chaque ouverture de session.
Or j'ai constaté après examen approfondi (en hexadécimal!) de REGISTRY.POL
qu'il n'indiquait qu'un seul script (le 1er, indice 0) et non pas les
suivants.
C'est donc le système qui va à ce moment là compléter éventuellement avec
le contenu de "script.ini"...
Ouf !!!

Si sous XP PRO on passe par GPEDIT, on n'a pas à se préoccuper de tout
cela.
C'est seulement si on est sous XP HOME (dans lequel GPEDIT.MSC n'existe
pas) qu'il faudra en tenir compte.

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr




Avatar
Jean-Claude BELLAMY
Dans le message :43c4b8cf$0$11858$,
Giques a pris la peine d'écrire ce qui
suit :
Merci Jean-Claude pour ces Infos

Question subsidiaire
Le script lancer à la fermeture peut-il être différent en fonction de
l'utilisateur ?


"Fermeture" de QUOI ?

De session, ou de Windows ?

Une fermeture de session est propre à l'utilisateur.
Une fermeture de WIndows est commune à tous les utilisateurs.

Si c'est une fermeture de Windows personnalisée, il faut alors inclure dans
le script un test sur le compte en cours ...

P.ex. l'appli qui sera lancée par LastChance (ou configurée par GPEDIT) sera
un script .bat ou .cmd, dans lequel on fera des tests avant d'exécuter ou
non l'appli réelle que l'on veut lancer .

P.ex. :

@echo off
if /i %username%==Homer goto Special
exit
:Special
k:program filestoolsstopdonuts.exe


En fait, il faudrait lancer le script lorsque je me déconnecte du
réseau de la société mais pas lorsque je me déconnecte du réseau
privé.


Dans ce cas, remplace le test sur le compte par un test sur l'adresse IP
p.ex. !

P.ex. si les adr.IP de ta société sont en 130.98.x.x et chez toi en
192.168.x.x :

Pour obtenir l'adresse IP, VBS est plus adapté
P.ex. :
fichier "PrintIP.vbs"
----------- couper ici -----------
set IPConfigSet =
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE
IPEnabled=TRUE")
for each IPConfig in IPConfigSet
adrIP=IPConfig.IPAddress
min=LBound(adrIP)
max=UBound(adrIP)
For i = min To max
curadr­rIP(i)
If len(curadr)>0 Then wscript.echo curadr
Next
next
----------- couper ici -----------

Dans le batch, on aura p.ex. ceci :

@echo off
cscript "k:scriptsvbsPrintIP.vbs" > AdrIP.txt
for /F %%A in (AdrIP.txt) do if
for /F "tokens=1,2 delims=." %%A in (adrIP.txt) do if %A.%B=2.168
goto Special
exit
:Special
k:program filestoolsstopdonuts.exe

A toi d'avoir de l'imagination et de faire fonctionner tes neurones ! ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Giques
Merci beaucoup Jean-Claude
Je médite la dessus

Giques
"Jean-Claude BELLAMY" a écrit dans le
message de news: %
Dans le message :43c4b8cf$0$11858$,
Giques a pris la peine d'écrire ce
qui suit :
Merci Jean-Claude pour ces Infos

Question subsidiaire
Le script lancer à la fermeture peut-il être différent en fonction de
l'utilisateur ?


"Fermeture" de QUOI ?

De session, ou de Windows ?

Une fermeture de session est propre à l'utilisateur.
Une fermeture de WIndows est commune à tous les utilisateurs.

Si c'est une fermeture de Windows personnalisée, il faut alors inclure
dans le script un test sur le compte en cours ...

P.ex. l'appli qui sera lancée par LastChance (ou configurée par GPEDIT)
sera un script .bat ou .cmd, dans lequel on fera des tests avant
d'exécuter ou non l'appli réelle que l'on veut lancer .

P.ex. :

@echo off
if /i %username%==Homer goto Special
exit
:Special
k:program filestoolsstopdonuts.exe


En fait, il faudrait lancer le script lorsque je me déconnecte du
réseau de la société mais pas lorsque je me déconnecte du réseau
privé.


Dans ce cas, remplace le test sur le compte par un test sur l'adresse IP
p.ex. !

P.ex. si les adr.IP de ta société sont en 130.98.x.x et chez toi en
192.168.x.x :

Pour obtenir l'adresse IP, VBS est plus adapté
P.ex. :
fichier "PrintIP.vbs"
----------- couper ici -----------
set IPConfigSet =
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE
IPEnabled=TRUE")
for each IPConfig in IPConfigSet
adrIP=IPConfig.IPAddress
min=LBound(adrIP)
max=UBound(adrIP)
For i = min To max
curadr­rIP(i)
If len(curadr)>0 Then wscript.echo curadr
Next
next
----------- couper ici -----------

Dans le batch, on aura p.ex. ceci :

@echo off
cscript "k:scriptsvbsPrintIP.vbs" > AdrIP.txt
for /F %%A in (AdrIP.txt) do if
for /F "tokens=1,2 delims=." %%A in (adrIP.txt) do if %A.%B=2.168
goto Special
exit
:Special
k:program filestoolsstopdonuts.exe

A toi d'avoir de l'imagination et de faire fonctionner tes neurones ! ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr