Comment planifier une tâche à exécuter lors de la fermeture de Windows

86

Comment planifier une tâche dans Windows XP à exécuter lorsque vous fermez Windows. De telle sorte que je veux exécuter un programme de ligne de commande simple que j'ai écrit en c # chaque fois que je ferme les fenêtres. Il ne semble pas y avoir d'option dans les tâches planifiées pour effectuer cette tâche lorsque mon ordinateur s'arrête.

Crippéoblade
la source

Réponses:

92

Exécutez gpedit.msc (stratégies locales)

Configuration ordinateur -> Paramètres Windows -> Scripts -> Arrêter -> Propriétés -> Ajouter

Dan Williams
la source
28
Si vous voulez qu'un script batch s'exécute à la fermeture de session, j'ai trouvé que le référencement direct du fichier .bat ne fonctionnait pas. Cependant, si j'ai utilisé C:\Windows\System32\cmd.execomme nom de script et /C C:\path\to\batch\script.batcomme paramètres de script , c'est le cas.
Dan Stevens
6
AVERTISSEMENT: les scipts de démarrage et d'arrêt de la stratégie de groupe ne sont pas exécutés lors de l'utilisation de Fastboot (activé par défaut dans Windows 8 et versions ultérieures). Dans ce cas, seul le redémarrage ou l'arrêt forcé (à partir de l'invite de commande) arrête réellement l'ordinateur. Dans tous les autres cas (arrêt du menu Démarrer), le noyau de l'ordinateur a hiberné et revu au démarrage, et les scipts de démarrage et d'arrêt de GPO sont ignorés.
voji
@voji: Est-ce également vrai pour Windows Server?
sampathsris
et redémarrer?
dangalg
ceux-ci ne semblent pas du tout fonctionner sur Server Core 1909
gordy
40

En plus de la réponse de Dan Williams, si vous souhaitez ajouter un script de démarrage / arrêt , vous devez rechercher les paramètres Windows sous Configuration ordinateur . Si vous souhaitez ajouter un script de connexion / déconnexion , vous devez rechercher les paramètres Windows sous Configuration utilisateur .

Donc, pour réitérer ce que Dan a dit avec ces informations incluses,

Pour le démarrage / l'arrêt:

  1. Exécutez gpedit.msc (stratégies locales)
  2. Configuration de l' ordinateur -> Paramètres Windows -> Scripts -> Démarrage ou arrêt -> Propriétés -> Ajouter

Pour la connexion / déconnexion:

  1. Exécutez gpedit.msc (stratégies locales)
  2. Configuration utilisateur -> Paramètres Windows -> Scripts -> Ouverture de session ou fermeture de session -> Propriétés -> Ajouter

Source: http://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx

Brett Pennings
la source
2
C'est la meilleure réponse. Lorsque vous ouvrez GPEditor, il affiche deux nœuds comme vous le décrivez. Étant donné que les deux nœuds ont une option Paramètres Windows, la réponse acceptée est moins claire que votre réponse. Merci pour le conseil. Très utile.
Seth Spearman le
34

Pour ceux qui préfèrent utiliser le Planificateur de tâches, il est possible de planifier une tâche à exécuter après un redémarrage / arrêt a été lancé en définissant la tâche pour qu'elle s'exécute après que l'événement 1074 dans le journal système de l'Observateur d'événements a été enregistré. Cependant, ce n'est bon que pour des tâches très courtes, qui s'exécuteront tant que le système redémarre / s'arrête, ce qui ne prend généralement que quelques secondes.

  • Depuis le planificateur de tâches:

    Commencez la tâche: Sur un
    journal des événements :
    Source système : USER32
    ID d'événement: 1074

  • À partir de l'invite de commande:

    schtasks / create / tn "nom de tâche" / tr "fichier de tâche" / sc onevent / ec system / mo * [system / eventid = 1074]

Commentaire: l'option / ec est disponible à partir de Windows Vista et supérieur. (merci @ t2d)

Veuillez noter que l'état de la tâche peut être:

L'opération demandée n'a pas été effectuée car l'utilisateur ne s'est pas connecté au réseau. Le service spécifié n'existe pas. (0x800704DD)

Cependant, cela ne signifie pas qu'il n'a pas fonctionné.

Oz Edri
la source
Merci pour le conseil! @Oz, cela fonctionnera-t-il au redémarrage et à l'arrêt? Le cas que j'essaie de couvrir est que Windows Update force un redémarrage ...
Erik Eidt
Oui, car cet événement est enregistré lors du redémarrage / arrêt.
Oz Edri
Veuillez noter que l'argument /ec systemn'existe pas, mais il est appelé /ru system. voir support.microsoft.com/en-us/kb/814596#bookmark-4
t2d
@ t2d, alors que / ec existe dans des versions plus récentes, / ru fait référence à une chose complètement différente. EC vous permet de spécifier un canal d'événement, tandis que ru vous permet d'exécuter en tant qu'autre utilisateur. Merci néanmoins pour votre commentaire. Je modifierai mon message en conséquence.
Oz Edri
1
Il y a une faute de frappe dans le modificateur de votre exemple. Ça devrait être ... /mo *[system/eventid=1074], pas.../mo *[system/evendid=1074]
testworks
4

Une solution de contournement peut être d'écrire un simple fichier de commandes pour exécuter le programme, puis d'arrêter l'ordinateur.

Vous pouvez arrêter à partir de la ligne de commande - votre script pourrait donc être assez simple:

c:\directory\myProgram.exe
C:\WINDOWS\system32\shutdown.exe -s -f -t 0
Neil Neyman
la source
4

Si vous exécutez GPEdit.MSC, vous pouvez accéder à Configuration ordinateur -> Paramètres Windows -> Scripts et ajouter des scripts de démarrage / arrêt. Ceux-ci peuvent être de simples fichiers batch, ou même des EXE complets. Vous pouvez également ajuster les configurations utilisateur pour les scripts de connexion et de déconnexion dans ce même outil. Cet outil n'est pas disponible dans Windows XP Home.

Kibbee
la source
1

Ce que je peux suggérer de faire est de créer un raccourci vers le fichier .bat (par exemple sur votre bureau) et lorsque vous souhaitez arrêter votre ordinateur (et exécuter le fichier .bat), cliquez sur le raccourci que vous avez créé. Après cela, modifiez le fichier .bat et ajoutez cette ligne de code à la fin ou si nécessaire:

c:\windows\system32\shutdown -s -f -t 00

Qu'est-ce que c'est

  1. Exécute le processus d'arrêt
  2. Affiche une alerte
  3. Force tous les processus en cours à s'arrêter
  4. S'exécute immédiatement
Matthew Smith
la source
1

Sous Windows 10 Professionnel, le fichier de commandes peut être enregistré; la solution de contournement consistant à enregistrer cmd.exe et à spécifier le fichier bat en tant que paramètre n'est pas nécessaire. Je viens de faire cela, en enregistrant à la fois un script d'arrêt et un script de démarrage (démarrage), et cela a fonctionné.

Wo'O Ideafarm
la source
0

Je devais également activer "Spécifier le temps d'attente maximum pour les scripts de stratégie de groupe" et "Afficher les instructions dans les scripts d'arrêt pendant leur exécution" pour que cela fonctionne pour moi comme je l'explique ici .

Roald
la source