Ferma la finestra taskeng.exe


18

Ho diversi processi pianificati nel mio ambiente Windows 7, principalmente per i backup, che dovrebbero essere eseguiti in background.

Tuttavia, invece di limitarsi a eseguire il lavoro in modalità silenziosa in background, l'utilità di pianificazione apre una finestra "taskeng.exe" nera (come console). La finestra si trova di fronte a tutte le altre finestre. Fortunatamente non ruba il focus della tastiera, ma blocca la vista su tutto.

taskeng.exe

C'è un modo per evitare questa finestra - o almeno deve apparire sullo sfondo senza rubare il mio focus VISUAL?

Esempio modificato dopo l'applicazione della taglia:

Ecco il mio ultimo tentativo di usare il materiale WScript (in un file chiamato RunSignatured.bat):

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

Il file signatured.bat contiene:

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

Sto cercando una soluzione per questo problema che funziona su Vista SP2 senza installare altri strumenti ed eseguirà un'app Java semplice (ma continuamente in esecuzione - su timer) da Utilità di pianificazione. Prima funzionavo in qualche modo prima che la mia installazione venisse cancellata, ma non riesco a capire come farlo ora che ho ripristinato (una specie di) la mia scatola. (Non ho fatto funzionare lo schema di WshShell - il file bat di destinazione apparentemente non viene mai eseguito (o viene ucciso immediatamente per qualche motivo).)
Daniel R Hicks,

(Il programma Java ha il proprio loop timer interno, il che significa che continua a funzionare dopo l'avvio.)
Daniel R Hicks,

@DanielRHicks dai un'occhiata a questa soluzione SU che può aiutarti.
avirk,

È possibile fornire il comando effettivo eseguito dall'attività?
Ƭᴇcʜιᴇ007,

@ techie007 - Vedi sopra, una volta approvata la modifica.
Daniel R Hicks,

Risposte:


8

Più specificamente alla generosità / esempio di Daniel R Hicks, ma penso che possa ancora essere applicato al problema originale:

Se si tratta di un file batch avviato dall'Utilità di pianificazione, quindi invece di avviare il file batch minimizzato / invisibile, probabilmente è necessario anche modificare il file batch stesso per eseguire i comandi in modo invisibile.

Quindi cambia:

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

A qualcosa come:

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

O forse eliminare completamente il file batch e fare semplicemente tutto dallo script (VBS) che si sta avviando direttamente dall'Utilità di pianificazione.

Qualcosa di simile a:

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

Soluzione implementata da DanH, in risposta ai suggerimenti di techie007, soddisfacendo la generosità:

Un file, chiamato RunSignatured.vbs, contenente:

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

Si noti che quanto sopra si basa sul fatto che java.exe si trova nel percorso, poiché la tecnica non funziona con lo spazio vuoto in Programmi quando si specifica un percorso completo. Non ci sono altri modi per aggirare questo problema, ma è quello che gli altri possono scoprire.

Quindi aggiungere RunSignature.vbscome nome "programma / script" in "Azione" in Utilità di pianificazione.


1
Ho provato numerose varianti start /bdell'approccio. Nulla sembrava eliminare la finestra - penso che sia stata creata quando inizi a eseguire il file bat, quindi ormai è troppo tardi.
Daniel R Hicks,

Per il secondo approccio, quando provo ad eseguirlo direttamente (facendo doppio clic sul file) ottengo "Errore Line: 3: il sistema non riesce a trovare il file specificato."
Daniel R Hicks,

Quello era un esempio, non un codice completamente testato. ;) Esiste java.exe nel percorso fornito? Forse prova con il lancio di qualcosa di semplice come "notepad.exe", poiché java.exe può avere alcune strane stranezze a volte.
Ƭᴇcʜιᴇ007,

(Nota il problema con lo spazio vuoto nel nome del percorso - non è chiaro come gestirlo.)
Daniel R Hicks,

(Ma la rimozione del percorso sembra funzionare! Apparentemente javasta attraversando il percorso di ricerca OK.)
Daniel R Hicks,

4

È possibile eseguire le attività pianificate come un altro utente, in questo modo non interagiranno affatto con il desktop interattivo del proprio account. Questo sembra certamente funzionare sui server Windows2003 che gestisco. Basta fare attenzione per assicurarsi che le autorizzazioni per i file e altri dettagli di autenticazione siano impostati in modo tale che le attività possano accedere a ciò di cui hanno bisogno quando non sono utenti diversi.

Modifica: O invece di eseguire direttamente uno strumento console, potresti avere un piccolo script che lo esegue usando WScript.Shell.Run con l'opzione "minimizza, nessun cambio di focus":

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

quindi esegui questo con l'utilità di pianificazione (la riga di comando è qualcosa di simile wscript c:\scripts\test.vbs) invece di chiamare direttamente lo strumento. In questo modo dovresti essere in grado di chiamare file batch e altri script. C'è anche un'opzione "nascondi completamente" (sostituisci il 7 sopra con uno 0), anche se in entrambi i casi nascondi / minimizza controlla solo la finestra iniziale: se lo strumento si apre di più da solo, potrebbe comunque rubare lo stato attivo come prima.

Vedere http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx per un elenco completo di opzioni per il metodo di esecuzione.


Temo che ciò non sia possibile perché ho bisogno delle mie credenziali Kerberos per alcune delle attività.
BlaM,

È possibile provare a eseguire l'attività indirettamente e utilizzare il metodo di esecuzione dell'host di script di Windows che consente di controllare il modo in cui viene presentata la finestra iniziale di un'attività. Vedi modifica.
David Spillett,

Domanda simile, con la stessa risposta per usare un vbs: serverfault.com/questions/9038/…
Anthony Hatzopoulos

3

Prova a eseguire l'attività pianificata in questo modo:

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

L' start /bdovrebbe avviare l'applicazione senza creare una nuova finestra.

Se ciò non funziona, è possibile creare uno script AutoIt autonomo che nasconderà la finestra taskeng.exe. Gli script AutoIt possono essere compilati in un file .exe.

Il file .exe sarebbe la prima riga del tuo file mybackup.bat. Il codice AutoIt sarebbe simile al seguente:

WinSetState ("taskeng", @SW_HIDE)

1
Non sembra funzionare.
Daniel R Hicks,

1
Finalmente una soluzione che ha funzionato per me! Ma solo dopo un riavvio.
Fabian Röling,

a proposito, invece di fare c: \ Windows \ System32 \ cmd.exe puoi semplicemente fare% COMSPEC%, che è impostato sull'interprete del prompt dei comandi che viene utilizzato. Per maggiori informazioni, consultare: en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse,


2

Il modo più semplice per nascondere un'applicazione avviata dall'Utilità di pianificazione è di impostarlo su "Esegui se l'utente è connesso o meno". Questa impostazione è disponibile nella scheda Generale delle proprietà dell'attività pianificata.


1

Ecco lo script SyncToy che uso. Notare le virgolette multiple intorno al percorso del file:

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

0

Apparentemente hai installato SQLyog MySQL GUI , che ha programmato l'esecuzione di SQLyog Job Agent . Sembra che sia un'applicazione console che non tenta di nascondersi.

Dovresti cercare nel Task Scheduler un'attività che fa riferimento a SQLyog e correggerne la voce. Se si tratta di una chiamata cmd, provare ad aggiungere /ball'elenco dei parametri. Se è solo una chiamata a un eseguibile, potresti correggerlo in vista di questa mia risposta .

Se si riscontrano problemi nell'individuare questa voce, utilizzare gli autoruns riscontrano per scoprire come viene avviato SQLyog. Puoi anche usare regedit per cercare tutte le menzioni di SQLyog o qualunque sia il nome della sua directory di installazione.

Naturalmente potresti anche disinstallare la GUI di SQLyog MySQL, se non ti serve.

Se non hai installato la GUI di SQLyog MySQL, il tuo computer potrebbe essere infetto. È possibile utilizzare Process Monitor per verificare quando viene visualizzato il popup, per vedere se si tratta di taskeng.exe da system32 o di uno dei simili di Taskeng.exe .


Già pubblicato in un'altra risposta, non sembra funzionare .
Tamara Wijsman,

@TomWijsman: se fai riferimento alla parte "/ b", l'ho inclusa solo per completezza.
harrymc,

0

stavo avendo il problema esatto usando SQLyog dopo aver fatto qualche ricerca l'ho risolto creando un file chiamato invisible.vbse inserendo questo codice:

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

Che creare un Utilità di pianificazione per eseguire il invisible.vbsfile e il gioco è fatto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.