Маленькое чёрное окно

Маленькое чёрное окно

RadRussianRus

Эта статья также была продублирована в мой блог: http://2217.ru/articles/cmd-window-ms-office-bug.

Совсем недавно у меня возникла проблема на Винде. Каждый час начало появляться консольное окно на пару секунд. И всё бы ничего, если бы это окно не переводило на себя фокус, что означает вылет из любого полноэкранного приложения (такого как игра, например), или же может потребоваться лишнее нажатие клавиши. И если второе не так заметно из-за того, что окно появляется на секунды (а порой и на милисекунды), после чего фокус возвращается обратно, то для первого хватает и милисекунд.

Главная проблема состит в том, что это происходит каждый час. В итоге, если идёшь играть, скорее всего, игра свернётся (и возможно, даже по несколько раз).

Эта вещь вызвана багом в Microsoft Office 2016. На других версиях не проверялось.

В последнем разделе есть инструкция по исправлению данной проблемы.

Как это было обнаружено

В Винде есть такая вещь, как "планировщик заданий". При определённых сигналах или по расписанию задание запускает приложения, указанные в нём. Управляется это всё дело через апплет консоли управления, настройки хранятся в реестре.

К чему это я? А к тому, что этим консольным окном оказался сам "планировщик заданий". Точнее, его обработчик, taskeng.exe.

Название этого файла (taskeng.exe) содержалось в названии консольного окна, после чего программа оставалась в процессах какое-то время.

В самом taskeng.exe нет ничего необычного. Вопрос был в том, почему он был запущен именно с консольным окном, перетягивающим на себя фокус. Поэтому далее я решил посмотреть, какое из заданий запускает это, и направился в Панель управления -> Администрирование -> Планировщик заданий.

Планировщик заданий.

У меня был ранее отключён журнал действий, поэтому я включил его. Через какое-то время, когда это окно появилось, я зашёл в планировщик и увидел это:

Выполненные задания.

Так как после запуска окна я посмотрел на часы и запомнил время (5:09:36), я легко обнаружил, какое задание это запускало. Им оказалось OfficeBackgroundTaskHandlerRegistration.

Время здесь (5:09:25) ближе всего к запомненному мной ко времени, когда появилось окно (5:09:36).

Что это и зачем

Задание располагается в Библиотека планировщика заданий > Microsoft > Office.

Описание задания выглядит следующим образом:

This task initiates Office Background Task Handler, which updates relevant Office data.

что в моём примерном переводе выглядит так:

Это задание запускает Office Background Task Handler, который обновляет соответствующие данные Office.

О каких данных идёт речь, я не особо понял. Название вообще переводится как "обработчик фоновых задач", что является достаточно размытым понятием.

Расположение Office Background Task Handler (вкладка "Действия")

Запускается задача каждый час, что подходит под описание проблемы.

Сигналы для запуска задания (вкладка "Триггеры").

Следует отметить одну интересную вещь. В этой же папке есть ещё одно похожее задание: OfficeBackgroundTaskHandlerLogon. Оно запускает то же самое, но только один раз: при запуске системы. И самое забавное в этом то, что если его запустить вручную, оно тоже открывает консольное окно taskeng.exe. Все другие действия выполняются без открытия этого окна.

Решение проблемы

Небольшой поиск в Google про этот файл не открыл никаких подробностей о том, что он делает конкретно, но открыл интересную вещь: оказывается, это известный баг Office. Проблема в том, что окно открывается потому, что задание выполняется не с правами системы, а с правами обычного пользователя.

Права выполнения для заданий OfficeBackgroundTaskHandlerLogon и OfficeBackgroundTaskHandlerRegistration.
Права выполнения для остальных заданий в этой же папке.

В итоге, одно из решений: поменять права задач на "система".

Почему "одно из решений"? Я не особо доверяю программам, не зная, что они делают. Тем более, что Майкрософт сама прекрасно доказала, что даже официальным программам от неё не стоит доверять. Поэтому я вместо того, чтобы дать системные права, отключил эти задачи.

Инструкция по исправлению

  1. Откройте "Панель управления":
    либо: значок на рабочем столе
    либо: Пуск > Панель управления
    либо: Мой компьютер > Открыть панель управления (в верхней панели)
  2. Откройте "Планировщик заданий":
    в режиме "Категория": Система и безопасность > Администрирование > Планировщик заданий
    в режиме "Значки": Администрирование > Планировщик заданий
  3. Найдите задачи OfficeBackgroundTaskHandlerLogon и OfficeBackgroundTaskHandlerRegistration:
    Расположение: Библиотека > Microsoft > Office
  4. Далее вы можете сделать любую из трёх вещей:
    1. Отключить задачи (ПКМ по задаче > Отключить).
    Если сомневаетесь, выбирайте этот вариант. Таким образом в случае необходимости их всегда можно включить ещё раз.
    2. Удалить задачи (ПКМ по задаче > Удалить).
    Если уверены, что эти задачи не делают ничего важного, можете спокойно удалить.
    3. Дать задачам права системы (ПКМ по задаче > Свойства > Общие > Изменить > введите "система" > Проверить имена > ОК > ОК).
    Не рекомендуется давать системные права неизвестным приложениям, а порой и даже известным.

Вполне вероятно, что эти задачи могут пересоздаться какой-нибудь Майкрософтовской программой. В таком случае данную процедуру придётся повторить ещё раз.