Stoppen Sie das Auftauchen des Fensters "taskeng.exe"


18

In meiner Windows 7-Umgebung sind mehrere Prozesse geplant, hauptsächlich für Sicherungen, die im Hintergrund ausgeführt werden sollen.

Anstatt jedoch nur im Hintergrund zu arbeiten, öffnet der Taskplaner ein schwarzes (konsolenartiges) "taskeng.exe" -Fenster. Das Fenster geht vor allen anderen Fenstern. Zum Glück stiehlt es nicht meinen Tastaturfokus, aber es blockiert die Sicht auf alles.

taskeng.exe

Gibt es eine Möglichkeit, dieses Fenster zu umgehen - oder zumindest im Hintergrund anzuzeigen, ohne meinen VISUAL-Fokus zu stehlen?

Beispiel bearbeitet in nachdem Kopfgeld angewendet wurde:

Hier ist mein letzter Versuch, das WScript-Zeug zu verwenden (in einer Datei mit dem Namen RunSignatured.bat):

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

Die Datei signatured.bat enthält:

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

Ich suche nach einer Lösung für dieses Problem, die unter Vista SP2 ohne Installation anderer Tools funktioniert und eine einfache Java-App vom Taskplaner ausführt (die jedoch ständig ausgeführt wird). Früher hat das irgendwie funktioniert, bevor meine Installation abgespritzt wurde, aber jetzt, wo ich meine Box restauriert habe, kann ich nicht mehr herausfinden, wie das geht. (Ich habe das WshShell-Schema nicht zum Laufen gebracht - die Ziel-Bat-Datei wird anscheinend nie ausgeführt (oder wird aus irgendeinem Grund sofort beendet).)
Daniel R Hicks

(Das Java-Programm hat eine eigene interne Timer-Schleife, was bedeutet, dass es nach dem Start weiter ausgeführt wird.)
Daniel R Hicks

@DanielRHicks Schauen Sie sich diese SU-Lösung an , sie kann Ihnen vielleicht helfen.
Avirk

Können Sie den tatsächlichen Befehl bereitstellen, der von der Task ausgeführt wird?
ƬᴇcƬᴇιᴇ007

@ techie007 - Siehe oben, sobald die Bearbeitung genehmigt wurde.
Daniel R Hicks

Antworten:


8

Genauer gesagt auf Daniel R Hicks Kopfgeld / Beispiel, aber ich denke, es kann immer noch auf das ursprüngliche Problem angewendet werden:

Wenn es sich um eine Stapeldatei handelt, die über den Taskplaner gestartet wird, müssen Sie wahrscheinlich auch die Stapeldatei selbst ändern, damit die Befehle unsichtbar ausgeführt werden.

Also ändere:

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

Um etwas wie:

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

Oder entfernen Sie die Batch-Datei vollständig und führen Sie einfach alles aus dem (VBS-) Skript aus, das Sie direkt vom Task-Planer aus starten.

Etwas wie:

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

Die von DanH implementierte Lösung entspricht den Vorschlägen von techie007 und erfüllt die Anforderungen:

Eine Datei mit dem Namen RunSignatured.vbs enthält:

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

Beachten Sie, dass sich das oben Genannte im Pfad von java.exe befindet, da das Verfahren bei der Angabe eines vollständigen Pfads nicht mit dem Leerzeichen in den Programmdateien funktioniert. Es gibt zweifellos andere Möglichkeiten, um dieses Problem zu umgehen, aber das müssen andere herausfinden.

Fügen Sie dann RunSignature.vbsals "Programm / Skript" den Namen in der "Aktion" im Taskplaner hinzu.


1
Ich habe zahlreiche Varianten des start /bAnsatzes ausprobiert . Nichts schien das Fenster zu eliminieren - ich denke, es wurde erstellt, als Sie anfingen, die Fledermausdatei auszuführen, also ist es zu spät.
Daniel R Hicks

Beim zweiten Versuch, die Datei direkt auszuführen (durch Doppelklicken auf die Datei), erhalte ich die Meldung "Zeile: 3 Fehler: Das System kann die angegebene Datei nicht finden."
Daniel R Hicks

Das war ein Beispiel, nicht vollständig getesteter Code. ;) Existiert java.exe unter dem angegebenen Pfad? Vielleicht testen Sie es mit dem Starten von etwas Einfachem wie "notepad.exe", da java.exe manchmal seltsame Macken haben kann.
ƬᴇcƬᴇιᴇ007

(Beachten Sie das Problem mit dem Leerzeichen im Pfadnamen - nicht klar, wie Sie damit umgehen sollen.)
Daniel R Hicks

(Aber das Entfernen des Pfads scheint zu funktionieren! Anscheinend javaist der Suchpfad in Ordnung.)
Daniel R Hicks

4

Sie können die geplanten Aufgaben als ein anderer Benutzer ausführen, sodass sie überhaupt nicht mit dem interaktiven Desktop Ihres normalen Kontos interagieren. Dies scheint auf den von mir verwalteten Windows2003-Servern zu funktionieren. Stellen Sie nur sicher, dass die Dateiberechtigungen und andere Authentifizierungsdetails so festgelegt sind, dass die Tasks auf das zugreifen können, was sie benötigen, wenn Sie als dieser andere Benutzer nicht angemeldet sind.

Bearbeiten: Anstatt ein Konsolentool direkt auszuführen, können Sie auch ein kleines Skript verwenden, das WScript.Shell.Run mit der Option "Minimieren, keine Fokusänderung" verwendet:

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

Führen Sie dies dann mit dem Taskplaner aus (die Befehlszeile ist ungefähr so wscript c:\scripts\test.vbs), anstatt das Tool direkt aufzurufen. Auf diese Weise sollten Sie auch Batch-Dateien und andere Skripte aufrufen können. Es gibt auch eine Option zum vollständigen Ausblenden (ersetzen Sie die 7 oben durch eine 0). In beiden Fällen steuert das Ausblenden / Minimieren jedoch nur das Anfangsfenster: Wenn sich das Werkzeug mehr selbst öffnet, stehlen sie möglicherweise weiterhin den Fokus wie zuvor.

Eine vollständige Liste der Optionen für die Ausführungsmethode finden Sie unter http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx .


Das ist leider nicht möglich, da ich für einige Aufgaben meine Kerberos-Anmeldeinformationen benötige.
BlaM

Sie können versuchen, die Aufgabe indirekt auszuführen und die Ausführungsmethode des Windows-Scripting-Hosts verwenden, mit der Sie steuern können, wie das ursprüngliche Fenster einer Aufgabe dargestellt wird. Siehe Bearbeiten.
David Spillett

Ähnliche Frage, mit der gleichen Antwort, um ein vbs zu verwenden: serverfault.com/questions/9038/…
Anthony Hatzopoulos

3

Versuchen Sie, Ihre geplante Aufgabe wie folgt auszuführen:

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

Sie start /bsollten die Anwendung starten, ohne ein neues Fenster zu erstellen.

Wenn dies nicht funktioniert, können Sie ein eigenständiges AutoIt- Skript erstellen , mit dem das Fenster "taskeng.exe" ausgeblendet wird. AutoIt-Skripte können in eine EXE-Datei kompiliert werden.

Die EXE-Datei ist die erste Zeile in Ihrer mybackup.bat-Datei. Der AutoIt-Code würde folgendermaßen aussehen:

WinSetState ("taskeng", @SW_HIDE)

1
Scheint nicht zu funktionieren.
Daniel R Hicks

1
Endlich eine Lösung, die für mich funktioniert hat! Aber erst nach einem Neustart.
Fabian Röling

Übrigens können Sie anstelle von "c: \ Windows \ System32 \ cmd.exe" auch "% COMSPEC%" ausführen. Dabei handelt es sich um den verwendeten Interpreter für die Eingabeaufforderung. Weitere Informationen finden Sie unter: en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse


2

Die einfachste Möglichkeit, eine im Taskplaner gestartete Anwendung auszublenden, besteht darin, sie auf "Ausführen, ob der Benutzer angemeldet ist oder nicht" einzustellen. Diese Einstellung finden Sie auf der Registerkarte Allgemein in den Eigenschaften für geplante Tasks.


1

Hier ist das SyncToy-Skript, das ich verwende. Beachten Sie die mehreren Anführungszeichen um den Speicherort der Datei:

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

0

Anscheinend haben Sie SQLyog MySQL GUI installiert , das die Ausführung des SQLyog Job Agent geplant hat . Es sieht so aus, als wäre es eine Konsolenanwendung, die nicht versucht, sich zu verstecken.

Sie sollten im Taskplaner nach einer Aufgabe suchen, die sich auf SQLyog bezieht, und deren Eintrag korrigieren. Wenn es sich um einen Befehlsaufruf handelt, versuchen Sie /b, ihn zur Parameterliste hinzuzufügen . Wenn es sich nur um einen Aufruf einer ausführbaren Datei handelt, können Sie dies angesichts meiner Antwort korrigieren .

Wenn Sie Probleme haben, diesen Eintrag zu finden , verwenden Sie Autoruns, um herauszufinden, wie SQLyog gestartet wird. Sie können auch regedit verwenden, um nach allen Erwähnungen von SQLyog oder nach dem Namen des Installationsverzeichnisses zu suchen.

Sie können SQLyog MySQL GUI natürlich auch deinstallieren, wenn Sie es nicht benötigen.

Wenn Sie SQLyog MySQL GUI nicht installiert haben, ist Ihr Computer möglicherweise infiziert. Sie können den Prozessmonitor verwenden , um zu überprüfen, wann das Popup angezeigt wird, um festzustellen, ob es sich um die Datei taskeng.exe aus system32 oder um eine der identischen Dateien von Taskeng.exe handelt .


Bereits in einer anderen Antwort gepostet, scheint nicht zu funktionieren .
Tamara Wijsman

@TomWijsman: Wenn Sie sich auf den Teil "/ b" beziehen, habe ich ihn nur der Vollständigkeit halber aufgenommen.
Harrymc

0

Ich hatte das genaue Problem mit SQLyog, nachdem ich einige Nachforschungen angestellt hatte. Ich habe das Problem behoben, indem ich eine Datei mit dem Namen erstellt invisible.vbsund diesen Code eingefügt habe :

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

Dann erstelle einen Taskplaner, um die invisible.vbsDatei auszuführen und fertig!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.