Zatrzymaj wyskakujące okno taskeng.exe

18

Mam zaplanowanych kilka procesów w moim środowisku Windows 7, głównie w przypadku kopii zapasowych, które powinny działać w tle.

Jednak zamiast po prostu działać cicho w tle, harmonogram zadań wyświetla czarne („konsolowe”) okno „taskeng.exe”. Okno przechodzi przed wszystkimi innymi oknami. Na szczęście nie kradnie mojej klawiatury, ale blokuje widok na wszystko.

taskeng.exe

Czy istnieje sposób na uniknięcie tego okna - a przynajmniej sprawienie, by pojawiło się w tle bez kradzieży mojego VISUAL focus?

Przykład edytowany po zastosowaniu nagrody głównej:

Oto moja ostatnia próba użycia rzeczy WScript (w pliku o nazwie RunSignatured.bat):

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

Plik Signatured.bat zawiera:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature
BlaM
źródło
Szukam rozwiązania tego problemu, który działa w systemie Vista SP2 bez instalowania innych narzędzi i uruchomi prostą (ale ciągle działającą - z timerem) aplikację Java z Task Scheduler. Kiedyś działał jakoś, zanim moja instalacja została zamknięta, ale nie mogę wymyślić, jak to zrobić teraz, gdy przywróciłem (w pewnym sensie) moje urządzenie. (Nie udało mi się uruchomić schematu WshShell - plik docelowego nietoperza najwyraźniej nigdy się nie uruchamia (lub z jakiegoś powodu zostaje natychmiast zabity).)
Daniel R Hicks
(Program Java ma własną wewnętrzną pętlę timera, co oznacza, że ​​kontynuuje działanie po uruchomieniu.)
Daniel R Hicks
@DanielRHicks sprawdź to rozwiązanie SU może być pomocne.
avirk
Czy możesz podać rzeczywiste polecenie uruchamiane przez Zadanie?
Ƭᴇcʜιᴇ007
@ techie007 - Patrz wyżej, po zatwierdzeniu zmiany.
Daniel R Hicks

Odpowiedzi:

8

Mówiąc dokładniej, nagroda / przykład Daniela R. Hicksa, ale myślę, że nadal można go zastosować do pierwotnego problemu:

Jeśli jest to plik wsadowy uruchamiany z Harmonogramu zadań, to zamiast po prostu uruchomić plik wsadowy zminimalizowany / niewidoczny, prawdopodobnie musisz również zmodyfikować sam plik wsadowy, aby uruchomić polecenia niewidocznie.

Więc zmień:

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

Do czegoś takiego:

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

A może całkowicie wyeliminuj plik wsadowy i po prostu zrób wszystko ze skryptu (VBS), który uruchamiasz bezpośrednio z Harmonogramu zadań.

Coś jak:

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

Rozwiązanie wdrożone przez DanH, w odpowiedzi na sugestie techie007, spełniające nagrodę:

Jeden plik o nazwie RunSignatured.vbs, zawierający:

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

Należy zauważyć, że powyższe polega na tym, że java.exe znajduje się na ścieżce, ponieważ technika nie działa z pustą pozycją w Program Files podczas określania pełnej ścieżki. Nie ma wątpliwości, że istnieją inne sposoby obejścia tego problemu, ale inni mogą to odkryć.

Następnie dodaj RunSignature.vbsjako nazwę „programu / skryptu” w „Akcji” w Harmonogramie zadań.

Ƭᴇcʜιᴇ007
źródło
1
Próbowałem wielu odmian tego start /bpodejścia. Wydawało się, że nic nie eliminuje okna - myślę, że zostało utworzone przed rozpoczęciem wykonywania pliku nietoperza, więc jest już za późno.
Daniel R Hicks
W drugim podejściu, gdy próbuję uruchomić go bezpośrednio (klikając dwukrotnie plik), pojawia się komunikat „Błąd linii: 3: System nie może znaleźć określonego pliku”.
Daniel R Hicks
To był przykład, nie do końca przetestowany kod. ;) Czy java.exe istnieje na podanej ścieżce? Być może przetestuj, uruchamiając coś prostego, np. „Notepad.exe”, ponieważ java.exe może czasami mieć dziwne dziwactwa.
Ƭᴇcʜιᴇ007
(Zwróć uwagę na problem ze spacją w nazwie ścieżki - nie jest jasne, jak sobie z tym poradzić.)
Daniel R Hicks
(Ale wydaje się, że usunięcie ścieżki działa! Najwyraźniej javaprzejście do ścieżki wyszukiwania jest OK.)
Daniel R Hicks
4

Możesz uruchamiać zaplanowane zadania jako inny użytkownik, w ten sposób nie będą oni w ogóle wchodzić w interakcje z pulpitem interaktywnym twojego normalnego konta. Z pewnością działa to na serwerach Windows2003, którymi administruję. Uważaj tylko, aby upewnić się, że uprawnienia do plików i inne szczegóły uwierzytelniania są ustawione tak, aby zadania miały dostęp do tego, czego potrzebują, gdy nie jest to inny użytkownik.

Edycja: Lub zamiast bezpośrednio uruchamiać narzędzie konsoli, możesz mieć mały skrypt, który uruchamia go za pomocą WScript.Shell.Run z opcją „minimalizuj, brak zmiany fokusa”:

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

następnie uruchom to za pomocą harmonogramu zadań (podobnie jak wiersz poleceń wscript c:\scripts\test.vbs) zamiast bezpośrednio wywoływać narzędzie. W ten sposób powinieneś być w stanie wywoływać pliki wsadowe i inne skrypty. Istnieje również opcja „całkowicie ukryj” (zamień 7 powyżej na 0), jednak w każdym przypadku ukryj / minimalizuj kontroluje tylko okno początkowe: jeśli narzędzie otworzy się bardziej, to może nadal kraść fokus jak poprzednio.

Zobacz http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx, aby uzyskać pełną listę opcji dla metody uruchamiania.

David Spillett
źródło
Obawiam się, że to niemożliwe, ponieważ do niektórych zadań potrzebuję poświadczeń Kerberos.
BlaM
Możesz spróbować uruchomić zadanie pośrednio i skorzystać z metody uruchamiania hosta skryptów systemu Windows, która pozwala na kontrolę sposobu wyświetlania początkowego okna zadania. Zobacz edycję.
David Spillett,
Podobne pytanie, z tą samą odpowiedzią na użycie vbs: serverfault.com/questions/9038/…
Anthony Hatzopoulos
3

Spróbuj uruchomić zaplanowane zadanie w ten sposób:

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

start /bNależy uruchomić aplikację bez tworzenia nowego okna.

Jeśli to nie zadziała, możesz utworzyć samodzielny skrypt AutoIt , który ukryje okno taskeng.exe. Skrypty AutoIt można skompilować do pliku .exe.

Plik .exe byłby pierwszym wierszem w pliku mybackup.bat. Kod AutoIt wygląda następująco:

WinSetState („taskeng”, @SW_HIDE)
jftuga
źródło
1
Nie wydaje się działać.
Daniel R Hicks,
1
Wreszcie rozwiązanie, które zadziałało dla mnie! Ale dopiero po ponownym uruchomieniu.
Fabian Röling,
btw zamiast robić c: \ Windows \ System32 \ cmd.exe, możesz po prostu zrobić% COMSPEC%, który jest ustawiony na używany interpreter wiersza poleceń. Aby uzyskać więcej informacji, zobacz: en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse
2

Wypróbuj 4trayMinimizer . Możesz zdefiniować aplikacje, które są domyślnie ukryte.

integratorIT
źródło
2

Najprostszym sposobem na ukrycie aplikacji uruchomionej w Harmonogramie zadań jest ustawienie jej na „Uruchom bez względu na to, czy użytkownik jest zalogowany”. To ustawienie można znaleźć na karcie Ogólne we właściwościach zaplanowanego zadania.

escyld
źródło
1

Oto skrypt SyncToy, którego używam. Zwróć uwagę na wiele cudzysłowów wokół lokalizacji pliku:

' SyncToy Scheduler
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\SyncToy 2.1\SyncToyCmd.exe"" -R" ,7
Carl
źródło
0

Najwyraźniej zainstalowałeś SQLyog MySQL GUI , który zaplanował wykonanie SQLyog Job Agent . Wygląda na to, że jest to aplikacja konsolowa, która nie próbuje się ukryć.

Powinieneś poszukać w Harmonogramie zadań zadania odnoszącego się do SQLyog i poprawić jego wpis. Jeśli jest to wywołanie cmd, spróbuj dodać /bdo listy parametrów. Jeśli jest to tylko wywołanie pliku wykonywalnego, możesz to poprawić w świetle mojej odpowiedzi .

Jeśli masz problemy ze zlokalizowaniem tego wpisu, użyj autoruns, aby dowiedzieć się, jak SQLyog jest uruchamiany. Możesz także użyć regedit do wyszukiwania wszystkich wzmianek o SQLyog lub jakiejkolwiek nazwie jego katalogu instalacyjnego.

Możesz oczywiście również odinstalować GUI SQLyog MySQL, jeśli go nie potrzebujesz.

Jeśli nie zainstalowano GUI SQLyog MySQL, komputer może być zainfekowany. Za pomocą Monitora procesów można sprawdzić, kiedy pojawi się wyskakujące okienko, aby sprawdzić, czy jest to taskeng.exe z systemu32, czy jeden z podobnych do Taskeng.exe .

harrymc
źródło
Już opublikowany w innej odpowiedzi, wydaje się nie działać .
Tamara Wijsman
@TomWijsman: Jeśli odwołujesz się do części „/ b”, podałem ją tylko dla kompletności.
harrymc
0

dokładnie miałem problem z SQLyogiem po przeprowadzeniu pewnych badań, naprawiłem go tworząc plik o nazwie invisible.vbsi wstawiając ten kod:

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

Następnie utwórz Harmonogram zadań, aby uruchomić invisible.vbsplik i to wszystko!

Ered
źródło