И как я это поборол.
Вроде бы, инструкций в сети на эту тему множество, но у клиента беда с языковой панелью оказалась какой-то нетривиальной, в инструкциях, как обычно, оказалось не все, так что пишу по горячим следам свой способ, может будет кому-то полезен.
Забегая вперед, дело, похоже, было в антивирусе, то ли Касперский, то ли какая-то древняя версия Авиры нагадила в автозагрузку и Планировщик задач, похерив запуск языковой панели. У клиента сначала стояло одно, потом другое, глюк он заметил где-то между, потому сразу не обратился, а кто конкретно виноват, я выяснять, естественно не стал.
1. Заходим в Панель управления —> Язык и региональные стандарты или через Выполнить (клавиши Win+R): команда: intl.cpl
2. Переключаемся на вкладку Языки и клавиатуры, нажимаем кнопку Изменить клавиатуру.
![](https://i.imgur.com/VDY3ACC.png)
Откроется окно Языки и службы текстового ввода.
Примечание: Для вызова этого окна непосредственно, также есть команда, которую необходимо выполнить в командной строке или окне Выполнить:
rundll32 shell32.dll,Control_RunDLL input.dll
В этом окне переходим на вкладку Языковая панель и проверяем, чтобы переключатель (радиокнопка) была в положении Закреплена в панели задач.
![](https://i.imgur.com/H4V68U0.png)
Если это так, но значка клавиатуры нет, то можно попробовать переключить радиокнопку в положение Скрыта или Располагается в произвольном месте рабочего стола, потом нажать кнопку Применить, вернуть радиокнопку в положение Закреплена в панели задач, вновь нажать Применить или OK. Если значок клавиатуры вернулся, то все хорошо, открываем шампанское и празднуем. Если нет, переходим к следующему шагу.
Неосторожное обращение с Планировщиком заданий или Реестром могут серьезно повредить систему, потому на этом этапе настоятельно рекомендуется создать точку восстановления системы.
1. Ищем в поиске меню Пуск «Создание точки восстановления» и запускаем соответствующий ярлык, или вводим команду systempropertiesprotection
в окне Выполнить или командной строке. Также, можно щелкнуть правой клавишей мыши по значку Компьютер, в контекстном меню выбрать пункт Свойства, далее щелкнуть по ссылке Дополнительные параметры системы, и в появившемся окне перейти на вкладку Защита системы. Нажимаем кнопку Создать
![](https://i.imgur.com/QtPeS16.png)
В следующем окне вводим имя точки восстановления, любое, главное, чтоб сами потом нашли, например RestoreLangPanel
.
![](https://i.imgur.com/Zkl9bx7.png)
Если все хорошо, система скажет, что точка восстановления создана успешно.
Проверяем, запущена ли служба Планировщика заданий. Для этого заходим в Панель управления —> Администрирование —> Службы, или вводим с командной строки (или через Выполнить):
services.msc
И ищем там службу Планировщик заданий. Ее состояние должно быть в значении Работает, а тип запуска Автоматически. Это одна из основных системных служб, так что если она отключена — проще переустановить систему.
![](https://i.imgur.com/gMjSwzV.png)
Проверка задания Планировщика
Если проблема не решилась на втором шаге, то, возможно, испорчена стандартная задача Планировщика заданий Windows, отвечающая за запуск языковой панели.
1. Запускаем планировщик заданий через Пуск —> Все программы —> Стандартные —> Служебные —> Планировщик заданий или через командную строку или Выполнить:
taskschd.msc /s
Далее, в левой панели открываем папку Библиотека планировщика заданий/Microsoft/Windows/TextServiceFramework
А далее, большинство найденных мной инструкций сыплются. Предлагают проверить, есть ли задача MsCtfMonitor
:
![](https://i.imgur.com/g9K97t1.jpg)
Но, когда ее нет:
![](https://i.imgur.com/77H9Vin.png)
почему-то сразу рекомендуют импортировать задачу, в виде XML-файла, причем еще и не всегда правильную.
На самом деле, задача (правильная или поврежденная) может уже быть в планировщике, но не отображаться. И если ее все-таки экспортировать, это может привести к ошибке планировщика.
Выбранная задача "{0}" больше не существует. Чтобы увидеть текущие задачи, нажмите Обновить
При попытке обновить, ошибка выскочит снова.
![](https://i.imgur.com/L0UVuf8.png)
Так что перед импортом задачи сначала надо проверить, нет ли ее на самом деле, почистить кэш Планировщика.
1. Закрываем Планировщик
2. Идем в каталог C:\Windows\System32\Tasks\Microsoft\Windows\TextServicesFramework\
и смотрим на его содержимое. В моем случае, задача MsCtfMonitor
уже была, но поврежденная.
![](https://i.imgur.com/fkH9ogO.png)
Копируем файл(ы) из этого каталога куда-нибудь (для бэкапа) и удаляем из каталога TextServicesFramework
3. Чистим кэш планировщика:
— Запускаем Редактор реестра (Regedit) через командную строку или Выполнить, командой regedit
— Идем в ветку Реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
, ищем там задачу MsCtfMonitor
и удаляем ее.
— Можно, но не обязательно, перезагрузить компьютер.
Далее, можно импортировать задачу:
Запускаем Планировщик заданий, переходим по дереву заданий в Библиотека планировщика заданий/Microsoft/Windows/TextServiceFramework
и импортируем XML-файл, нажав на ссылку Импортировать задачу в панели Действия:
Скачать с Mega.NZ
Скачать с Google.Drive
Файл на PasteBin
Как отличить правильный XML от неверного — в первую очередь посмотреть, есть ли в файле указание на нужные библиотеки MsCtfMonitor.dll:
<RegistrationInfo>
<Source>$(@%systemRoot%\system32\MsCtfMonitor.dll,-1000) </Source>
<Description>$(@%systemRoot%\system32\MsCtfMonitor.dll,-1001) </Description>
</SecurityDescriptor>
<URI>Microsoft\Windows\TextServicesFramework\MsCtfMonitor</URI>
<SecurityDescriptor>D:(A;;FA;;;BA)(A;;FA;;;SY)(A;;FR;;;BU)
</RegistrationInfo>
Далее, перезагружаем компьютер.
Если значок клавиатуры/языка/языковая панель не появилась, надо перейти к третьему шагу.
Сначала идем в C:\Windows\System32\
и ищем там файл ctfmon.exe
, если он есть, идем дальше, если файл отсутствует — достаем его из дистрибутива Windows, кладем в C:\Windows\System32\
или запускаем
sfc /scannow
с правами администратора.
Если файл есть, то сначала проверяем его на заражение вирусами. Некоторые вирусы или внедряют в ctfmon.exe
свой код (иногда кривой, косой и написанный дендрофекальным методом), или вообще заменяют исполняемый файл. Так что стоит сначала его проверить на вирусы (можно онлайн-сервисами российского DrWeb или международным VirusTotal). В моем случае обошлось. И файл нашелся, и вирусов не было.
DrWeb:
![](https://i.imgur.com/T9RW6ma.png)
VirusTotal:
![](https://i.imgur.com/qCGddYH.png)
File distributed by Microsoft
, т.е. все ОК.
Сканировать файл на VirusTotal
Далее, надо проверить, прописан ли запуск ctfmon.exe
в Реестре Windows. Запускаем Regedit и переходим по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Если там нет строкового параметра, содержащего путь к ctfmon.exe,
![](https://i.imgur.com/UXXCNNL.png)
то необходимо добавить его вручную, или воспользоваться готовым REG-файлом (сработает, если каталог Windows называется Windows
и расположен на диске C:\
)
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"ctfmon.exe"="C:\\Windows\\System32\\ctfmon.exe"
Скачать файл с Mega.NZ
Скачать файл с Google.Drive
Файл на PasteBin
После внесения изменений в Реестр, нужно перезагрузить компьютер.
У меня все получилось:
![](https://i.imgur.com/eShNg01.png)