Exécuter un fichier batch sur Windows 7 d'arrêt avant la fermeture des programmes (de préférence sur le bouton d'alimentation de la presse)

J'ai un Windows 7 boîte avec plusieurs VMWare Player machines qui sont lancés au démarrage. J'utilise WMWare VIX et un fichier de commandes pour arrêter les machines virtuelles comme suit:

"C:\path\to\VMWare VIX\vmrun.exe" -T player stop "C:\path\to\machine.vmx" soft

Ce que je veux accomplir est d'exécuter ces commandes lorsque l'hôte de la machine est à l'arrêt, de sorte que je n'ai pas besoin de fermer chaque VM séparément. Lorsqu'il est déployé, les arrêts de production sera probablement commencé par une courte pression de l'ACPI bouton d'alimentation, non pas à partir du menu Démarrer. Des égards, j'ai essayé ça ne fonctionne pas (du moins pas assez bien):

  1. Les Stratégies de groupe - le moyen Le plus évident à faire, mais dans Windows 7, la possibilité d'exécuter des scripts d'arrêt 'de manière asynchrone' a disparu.
    Le résultat est que Windows première raconte toutes les fenêtres ouvertes pour fermer, les machines virtuelles répondent qu'ils sont en cours d'utilisation et vous obtenez le " Forcer la fermeture de la boîte de dialogue. Seulement après VMWare Player et tout le reste est fermé sont les scripts d'exécution, à la non-utilisation.
    Vous pensez que cela pourrait être changé, mais je pense que je me souviens avoir vu quelques officiels MS remarque le long des lignes de "non, désolé". Ne pouvez pas trouver le lien.
  2. Utiliser un fichier de commandes qui ferme toutes les machines virtuelles et puis les arrêts de l'hôte en tant que raccourci sur le bureau au lieu de l'habituel bouton d'arrêt. - Œuvres, et c'est ce que je suis en ce moment en développement.
    Mais à l'aide de l'alimentation ACPI bouton déclenche un arrêt normal avec le même résultat que précédemment, et il serait mieux si l'utilisateur final qui met la machine en marche et l'arrêt sur une base quotidienne ne devrait pas avoir besoin d'utiliser un moniteur et une souris.
    Donc ce que je vais googler pour l'instant est un moyen de modifier l'action appelée en appuyant sur le bouton d'alimentation physique. Windows vous permet de choisir entre différentes actions, comme dans le Sommeil, Hibernate, Redémarrer, etc, mais pourriez-vous changer cela en " Exécuter ce .chauve-souris"? Ou peut-être modifier le comportement de la commande d'arrêt en tout?
  3. Par programme intercepter le message d'arrêt, d'annuler l'arrêt, exécutez le fichier de commandes, ré-initier l'arrêt. Il y a eu quelques débats sur l'interception d'arrêt par exemple ici, ici et ici, mais je suis encore trop de un n00b dans toutes les langues, sauf peut-être que Ruby ou Java pour vraiment comprendre si et comment il pourrait être fait dans ce cas. Si quelqu'un peut expliquer comment faire ce travail (sans rester bloqué sur " Forcer la fermeture de l'écran), alors je suis impatient d'essayer n'importe quelle langue que vous proposez.

OriginalL'auteur lime | 2011-01-24