Arrêter la fenêtre de taskeng.exe de apparaître

18

J'ai plusieurs processus planifiés dans mon environnement Windows 7, principalement pour les sauvegardes, qui sont censés s'exécuter en arrière-plan.

Cependant, au lieu de simplement faire son travail en arrière-plan, le planificateur de tâches affiche une fenêtre noire (comme sur la console) "taskeng.exe". La fenêtre passe devant toutes les autres fenêtres. Heureusement, cela ne vole pas le focus de mon clavier, mais il bloque la vue sur tout.

taskeng.exe

Existe-t-il un moyen d'éviter cette fenêtre - ou au moins de la faire apparaître en arrière-plan sans voler mon focus VISUEL?

Exemple modifié après l'application de la prime:

Voici ma dernière tentative d'utilisation du truc WScript (dans un fichier nommé RunSignatured.bat):

Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False

Le fichier signatured.bat contient:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature
BlaM
la source
Je suis à la recherche d'une solution à ce problème qui fonctionne sur Vista SP2 sans installer d'autres outils et exécutera une application Java simple (mais fonctionnant en continu - sur minuterie) à partir du Planificateur de tâches. J'avais l'habitude de faire fonctionner cela d'une manière ou d'une autre avant que mon installation ne soit arrosée, mais je ne sais pas comment le faire maintenant que j'ai restauré (en quelque sorte) ma boîte. (Je n'ai pas réussi à faire fonctionner le schéma WshShell - le fichier de chauve-souris cible ne fonctionne jamais (ou est tué immédiatement pour une raison quelconque).)
Daniel R Hicks
(Le programme Java a sa propre boucle de temporisation interne, ce qui signifie qu'il continue de fonctionner après son démarrage.)
Daniel R Hicks
@DanielRHicks découvrez cette solution SU peut-être qu'elle peut vous aider.
avirk
Pouvez-vous fournir la commande réelle exécutée par la tâche?
Ƭᴇcʜιᴇ007
@ techie007 - Voir ci-dessus, une fois la modification approuvée.
Daniel R Hicks

Réponses:

8

Plus précisément à la prime / exemple de Daniel R Hicks, mais je pense qu'il peut toujours être appliqué au problème d'origine:

S'il s'agit d'un fichier de commandes en cours de lancement à partir du Planificateur de tâches, au lieu de simplement lancer le fichier de commandes réduit / invisible, vous devrez probablement également modifier le fichier de commandes lui-même pour exécuter ses commandes de manière invisible.

Alors changez:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature

Pour quelque chose comme:

cd C:\Users\danh\bin
start /b "C:\Program Files\Java\jre7\bin\java.exe" Signature

Ou peut-être éliminer complètement le fichier de commandes et tout faire à partir du script (VBS) que vous lancez directement à partir du Planificateur de tâches.

Quelque chose comme:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "C:\Program Files\Java\jre7\bin\java.exe Signature", 0, False

Solution mise en œuvre par DanH, en réponse aux suggestions de techie007, satisfaisant la prime:

Un fichier, nommé RunSignatured.vbs, contenant:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "java.exe Signature", 0, False

Notez que ce qui précède repose sur java.exe étant dans le chemin d'accès, car la technique ne fonctionne pas avec le blanc dans Program Files lors de la spécification d'un chemin d'accès complet. Il existe sans aucun doute d'autres façons de contourner ce problème, mais c'est à découvrir par d'autres.

Ajoutez ensuite le RunSignature.vbsnom "programme / script" dans "Action" dans le Planificateur de tâches.

Ƭᴇcʜιᴇ007
la source
1
J'ai essayé de nombreuses variantes de l' start /bapproche. Rien ne semblait éliminer la fenêtre - je pense qu'elle a été créée au moment où vous commencez à exécuter le fichier bat, donc il est trop tard.
Daniel R Hicks
Pour la deuxième approche, lorsque j'essaie de l'exécuter directement (en double-cliquant sur le fichier), j'obtiens "Erreur ligne 3: le système ne peut pas trouver le fichier spécifié".
Daniel R Hicks
C'était un exemple, du code non entièrement testé. ;) Existe-t-il java.exe sur le chemin fourni? Peut-être testez-vous en lançant quelque chose de simple comme "notepad.exe", car java.exe peut parfois avoir des bizarreries étranges.
Ƭᴇcʜιᴇ007
(Notez le problème avec le blanc dans le nom du chemin - pas clair comment gérer cela.)
Daniel R Hicks
(Mais supprimer le chemin semble fonctionner! Apparemment, javale chemin de recherche est OK.)
Daniel R Hicks
4

Vous pouvez exécuter les tâches planifiées en tant qu'utilisateur différent, de cette façon, elles n'interagiront pas du tout avec le bureau interactif de votre compte normal. Cela semble certainement fonctionner sur les serveurs Windows2003 que j'administre. Veillez simplement à vous assurer que les autorisations de fichier et les autres détails d'authentification sont définis de telle sorte que les tâches puissent accéder à ce dont elles ont besoin lorsqu'elles ne sont pas cet utilisateur différent.

Edit: Ou au lieu d'exécuter directement un outil de console, vous pourriez avoir un petit script qui l'exécute en utilisant WScript.Shell.Run avec l'option "minimiser, pas de changement de focus":

' sample script: c:\scripts\test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "c:\location\of\tool\utility.exe", 7

puis exécutez-le avec le planificateur de tâches (la ligne de commande étant quelque chose comme wscript c:\scripts\test.vbs) au lieu d'appeler directement l'outil. Vous devriez également pouvoir appeler des fichiers batch et d'autres scripts de cette façon. Il existe également une option "complètement masquer" (remplacez le 7 ci-dessus par un 0), bien que dans les deux cas, la fonction masquer / minimiser ne contrôle que la fenêtre initiale: si l'outil s'ouvre plus lui-même, ils peuvent toujours voler le focus comme auparavant.

Voir http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx pour une liste complète des options de la méthode d'exécution.

David Spillett
la source
Je crains que ce ne soit pas possible, car j'ai besoin de mes informations d'identification Kerberos pour certaines tâches.
BlaM
Vous pouvez essayer d'exécuter la tâche indirectement et d'utiliser la méthode d'exécution de l'hôte de script Windows qui vous permet de contrôler la présentation de la fenêtre initiale d'une tâche. Voir modifier.
David Spillett
Question similaire, avec la même réponse pour utiliser un vbs: serverfault.com/questions/9038/…
Anthony Hatzopoulos
3

Essayez d'exécuter votre tâche planifiée comme ceci:

C: \ Windows \ System32 \ cmd.exe / c start /bc:\fullpath\mybackup.bat

Le start /bdevrait démarrer l'application sans créer de nouvelle fenêtre.

Si cela ne fonctionne pas, vous pouvez créer un script AutoIt autonome qui masquera la fenêtre taskeng.exe. Les scripts AutoIt peuvent être compilés en un fichier .exe.

Le fichier .exe serait la première ligne de votre fichier mybackup.bat. Le code AutoIt ressemblerait à ceci:

WinSetState ("taskeng", @SW_HIDE)
jftuga
la source
1
Ne semble pas fonctionner.
Daniel R Hicks
1
Enfin une solution qui a fonctionné pour moi! Mais seulement après un redémarrage.
Fabian Röling
btw, au lieu de faire c: \ Windows \ System32 \ cmd.exe, vous pouvez simplement faire% COMSPEC%, qui est défini sur l'interpréteur d'invite de commandes utilisé. Pour plus d'informations, voir: en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse
2

Essayez 4trayMinimizer . Vous pouvez définir des applications masquées par défaut.

integratorIT
la source
2

Le moyen le plus simple de masquer une application lancée à partir du Planificateur de tâches est de la définir sur "Exécuter, que l'utilisateur soit connecté ou non". Ce paramètre se trouve dans l'onglet Général des propriétés de tâche planifiée.

escyld
la source
1

Voici le script SyncToy que j'utilise. Remarquez les multiples guillemets autour de l'emplacement du fichier:

' SyncToy Scheduler
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\SyncToy 2.1\SyncToyCmd.exe"" -R" ,7
Carl
la source
0

Apparemment, vous avez installé l' interface graphique SQLyog MySQL , qui a planifié l'exécution de l' agent de travail SQLyog . Il semble que ce soit une application console qui n'essaye pas de se cacher.

Vous devez rechercher dans le Planificateur de tâches une tâche faisant référence à SQLyog et corriger son entrée. S'il s'agit d'un appel cmd, essayez d'ajouter /bà la liste des paramètres. S'il ne s'agit que d'un appel à un exécutable, vous pouvez le corriger au vu de ma réponse .

Si vous rencontrez des problèmes pour localiser cette entrée, utilisez les exécutions automatiques pour trouver comment SQLyog est démarré. Vous pouvez également utiliser regedit pour rechercher toutes les mentions de SQLyog ou quel que soit le nom de son répertoire d'installation.

Vous pouvez bien sûr également désinstaller l'interface graphique SQLyog MySQL, si vous n'en avez pas besoin.

Si vous n'avez pas installé l'interface graphique SQLyog MySQL, votre ordinateur peut être infecté. Vous pouvez utiliser Process Monitor pour vérifier quand la fenêtre apparaît, pour voir s'il s'agit du taskeng.exe de system32 ou de l'un des sosies de Taskeng.exe .

harrymc
la source
Déjà publié dans une autre réponse, ne semble pas fonctionner .
Tamara Wijsman le
@TomWijsman: Si vous vous référez à la partie "/ b", je ne l'ai incluse que pour être complète.
harrymc
0

J'avais le problème exact en utilisant SQLyog après avoir fait des recherches, je l'ai corrigé en créant un fichier appelé invisible.vbset en insérant ce code:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\Program Files (x86)\SQLyog\"
WshShell.Run "SJA.exe C:\Users\REPLACE_UR_USER\Desktop\test.xml -lC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sja.log -sC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sjasession.xml ", 0

Ensuite, créez un planificateur de tâches pour exécuter le invisible.vbsfichier et c'est tout!

Ered
la source