Остановить всплывающее окно taskeng.exe


18

В моей среде Windows 7 запланировано несколько процессов, в основном для резервного копирования, которые должны выполняться в фоновом режиме.

Однако вместо того, чтобы просто спокойно работать в фоновом режиме, планировщик задач открывает черное (как консоль) окно «taskeng.exe». Окно выходит перед всеми остальными окнами. К счастью, это не крадет у меня фокус клавиатуры, но блокирует обзор всего.

taskeng.exe

Есть ли способ избежать этого окна - или, по крайней мере, оно появляется на заднем плане, не крадя мой ВИЗУАЛЬНЫЙ фокус?

Пример, отредактированный после примененного вознаграждения:

Вот моя последняя попытка использовать материал WScript (в файле с именем RunSignatured.bat):

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

Файл signatured.bat содержит:

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

Я ищу решение этой проблемы, которое работает на Vista SP2 без установки других инструментов и будет запускать простое (но постоянно работающее по таймеру) приложение Java из планировщика задач. Раньше у меня это работало как-то до того, как моя установка зависла, но я не могу понять, как это сделать сейчас, когда я восстановил (вроде) свою коробку. (Я не получил схему WshShell для работы - целевой файл летучей мыши, по-видимому, никогда не запускается (или по какой-то причине немедленно убивается).)
Даниэль Р Хикс

(У программы Java есть собственный внутренний цикл таймера, что означает, что она продолжает работать после запуска.)
Даниэль Р Хикс,

@DanielRHicks проверить это решение SU, может быть, оно может помочь вам.
avirk

Можете ли вы указать фактическую команду, запускаемую Задачей?
Ƭᴇcʜιᴇ007

@ techie007 - см. выше, как только редактирование будет одобрено.
Даниэль Р Хикс

Ответы:


8

Точнее, в отношении примера / награды Дэниела Р. Хикса, но я думаю, что он все еще может быть применен к исходной проблеме:

Если это пакетный файл, запускаемый из планировщика задач, то вместо простого запуска минимизированного / невидимого пакетного файла вам, вероятно, также необходимо изменить сам пакетный файл, чтобы выполнять его команды незаметно.

Так что поменяйте:

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

Для чего-то вроде:

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

Или, возможно, полностью удалите командный файл и просто сделайте все из сценария (VBS), который вы запускаете непосредственно из планировщика задач.

Что-то вроде:

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

Решение, реализованное DanH, в ответ на предложения techie007, удовлетворяющие щедрость:

Один файл с именем RunSignatured.vbs, содержащий:

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

Обратите внимание, что вышеупомянутое опирается на java.exe, находящийся в пути, так как метод не работает с пробелом в Program Files при указании полного пути. Без сомнения, есть другие способы обойти эту проблему, но это должны открыть другие.

Затем добавьте RunSignature.vbsв качестве «программы / сценария» имя в «Действие» в планировщике задач.


1
Я пробовал многочисленные варианты start /bподхода. Казалось, ничто не устраняет окно - я думаю, оно было создано к тому моменту, когда вы начали выполнять файл bat, поэтому к тому времени уже слишком поздно.
Даниэль Р Хикс

Для второго подхода, когда я пытаюсь запустить его напрямую (дважды щелкнув файл), я получаю «Строка: 3 Ошибка: система не может найти указанный файл».
Даниэль Р Хикс

Это был пример, не полностью проверенный код. ;) Существует ли java.exe по указанному пути? Возможно, тестируйте с запуском чего-то простого, например, «notepad.exe», поскольку java.exe иногда может показаться странным.
Ƭᴇcʜιᴇ007

(Обратите внимание на проблему с пробелом в имени пути - не ясно, как с этим справиться.)
Даниэль Р Хикс,

(Но удаление пути, похоже, работает! Видимо, javaвсе в порядке в пути поиска.)
Даниэль Р. Хикс,

4

Вы можете запускать запланированные задачи от имени другого пользователя, чтобы они вообще не взаимодействовали с интерактивным рабочим столом вашей обычной учетной записи. Это, безусловно, работает на серверах Windows2003, которые я администрирую. Просто будьте осторожны, чтобы убедиться, что права доступа к файлам и другие данные аутентификации установлены так, что задачи могут получить доступ к тому, что им нужно, когда вы являетесь другим пользователем.

Редактировать: или вместо непосредственного запуска консольного инструмента вы можете создать небольшой скрипт, который запускает его с помощью WScript.Shell.Run с опцией «свернуть без изменения фокуса»:

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

затем запустите это с помощью планировщика задач (что-то вроде командной строки wscript c:\scripts\test.vbs) вместо непосредственного вызова инструмента. Вы также должны иметь возможность вызывать командные файлы и другие сценарии. Существует также опция «полностью скрыть» (замените 7 выше на 0), хотя в любом случае скрыть / свернуть контролирует только начальное окно: если инструмент открывает больше сам, он может по-прежнему красть фокус, как и раньше.

См. Http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx для получения полного списка опций для метода run.


Боюсь, что это невозможно, потому что мне нужны мои учетные данные kerberos для некоторых задач.
BlaM

Вы можете попробовать запустить задачу косвенно и с помощью метода run хоста сценариев Windows, который позволяет вам контролировать представление начального окна задачи. Смотрите редактировать.
Дэвид Спиллетт

Подобный вопрос, с тем же ответом, чтобы использовать vbs: serverfault.com/questions/9038/…
Энтони Хатзопулос

3

Попробуйте запустить запланированное задание так:

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

start /bДолжны запустить приложение без создания нового окна.

Если это не работает, то вы можете создать автономный скрипт AutoIt, который будет скрывать окно taskeng.exe. Скрипты AutoIt могут быть скомпилированы в .exe.

.Exe будет первой строкой в ​​вашем файле mybackup.bat. Код AutoIt будет выглядеть так:

WinSetState ("taskeng", @SW_HIDE)

1
Кажется, не работает.
Даниэль Р Хикс

1
Наконец-то решение, которое сработало для меня! Но только после перезагрузки.
Фабиан

Кстати, вместо того, чтобы делать c: \ Windows \ System32 \ cmd.exe, вы можете просто сделать% COMSPEC%, который установлен на используемый интерпретатор командной строки. Для получения дополнительной информации см .: en.wikipedia.org/wiki/COMSPEC
Брент Риттенхаус


2

Самый простой способ скрыть приложение, запущенное из планировщика заданий, - установить для него значение «Запускать независимо от того, вошел пользователь в систему или нет». Этот параметр можно найти на вкладке «Общие» в свойствах запланированных задач.


1

Вот скрипт SyncToy, который я использую. Обратите внимание на несколько кавычек вокруг расположения файла:

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

0

Видимо, вы установили SQLyog MySQL GUI , который запланировал выполнение агента заданий SQLyog . Похоже, что это консольное приложение, которое не пытается скрыть себя.

Вы должны найти в планировщике заданий задачу, ссылающуюся на SQLyog, и исправить ее запись. Если это вызов cmd, попробуйте добавить /bего в список параметров. Если это просто вызов исполняемого файла, вы можете исправить это с учетом моего ответа .

Если у вас возникли проблемы с поиском этой записи, используйте автозапуск, чтобы узнать, как запускается SQLyog. Вы также можете использовать regedit для поиска всех упоминаний SQLyog или любого другого имени его установочного каталога.

Конечно, вы также можете удалить SQLyog MySQL GUI, если вам это не нужно.

Если вы не установили SQLyog MySQL GUI, возможно, ваш компьютер заражен. Вы можете использовать Process Monitor, чтобы проверить, когда появляется всплывающее окно, чтобы увидеть, является ли это taskeng.exe из system32 или один из похожих на Taskeng.exe .


Уже опубликовано в другом ответе, похоже, не работает .
Тамара Вийсман

@ TomWijsman: Если вы ссылаетесь на часть "/ b", я включил ее только для полноты.
Harrymc

0

у меня возникла точная проблема с использованием SQLyog после некоторого исследования, я исправил его, создав файл с именем invisible.vbsи вставив этот код:

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

Чем создать планировщик заданий для запуска invisible.vbsфайла и все!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.