Алгоритм решения проблемы
Для начала стоит провести диагностику ОС посредством встроенных утилит:
- Запускаем консоль «Выполнить» при помощи комбинации Win R и вводим строку msconfig.
- После этого появляется окно «Конфигурации», в котором нужно отметить пункт «Диагностический запуск».
- Перезагружаем систему.
Если после безопасного входа строка с надписью system32 на черной панели снова выскакивает, то, вероятно, за это отвечает определенный системный процесс. Когда в область Start прописывается вредоносный код, после диагностического запуска окно cmd.exe не включается автоматически.
Чтобы избавиться от ошибки, стоит для начала очистить системный реестр и директории от лишнего мусора, накопившегося вследствие действий пользователя:
Владельцам десятки позволено решать подобные проблемы через командную строку:
Также можно использовать оснастку «Планировщика задач», если окно командной строки постоянно маячит на рабочем столе и мешает работе:
- В меню «Выполнить» нужно ввести taskschd.msc для запуска утилиты.
- В разделе «Библиотека» находится полный список запланированных на определенное время задач.
- Для дезактивации записей нужно выделить их кнопкой мыши и нажать на пункт «Отключить» в правом меню.
- Если же при выборе пункта возникают сомнения касательно его реальных функций, стоит обратиться к интернету за справкой.
К чему может привести игнорирование ошибки?
Если задействованы встроенные утилиты или программы, которым можно доверять, опасаться нечего. Исправить проблему на слабом ПК можно только посредством его апгрейда. Для примера, в десятой версии Windows часто встречаются подобные баги, так как система особо требовательна к ресурсам компьютера.
Но если же причиной запуска системной утилиты стал вирус, то определенно можно ждать полного выхода из строя всей файловой системы. Для избавления от «черного окна» следует предпринять несколько простых действий.
Коммандная строка в автозапуске (windows 10)
Копаясь в автозапуске через MS Autoruns обнаружил в ветке реестра КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSafeBoot параметр AlternateShell, запускающий коммандную строку без каких-либо аргументов.
При попытке посмотреть свойства этого параметра в autoruns (alt enter) вылезает ошибка “Не удаётся найти c:windowssysnativecmd.exe“, при том, что autoruns показывает, что cmd лежит в папке System32, а папки Sysnative у меня нет.
В гуглах говорят, что этот параметр нужен для использования коммандной строки в безопасном режиме. Но меня почему-то напрягла эта статья: https://vms.drweb.ru/virus/?i=13141954&virus_name=Trojan.KillProc.45509&lng=ru, также мне показалось странным расхождение в путях к cmd в autoruns (непонятная папка Sysnative, вместо System32 или SysWOW64).
В общем, не могу понять, зачем cmd в автозапуске и можно ли этот параметр отключить? Антивирь и virustotal молчат (логично – с коммандной строкой у меня всё в порядке). У меня навязчиавя идея, что что-то может использовать коммандную строку при включении компа до входа в пользователя, либо прячется от диспетчеров задач, либо это остатки чего-нибудь нехорошего (хотя такое замечено не было).
Причины возникновения
Панель интерпретатора командной строки, неожиданно появляющаяся после загрузки ОС, может быть свидетельством изменения некоторых системных настроек сторонними приложениями. Но это не единственная причина его появления на рабочем столе.
Краткий перечень факторов помещения cmd exe windows в автозапуск:
- Спланированное включение некоторых функций установленных программ или официальных обновлений.
- Включение любого стороннего приложения, установленного пользователем.
- Работа вирусных утилит или попытка системы восстановить поврежденные файлы.
У некоторых пользователей черное окно CMD открывается в ситуации:
- Отображения рабочего стола и чтения всех висящих в автозагрузке программ. Если мощности процессору не хватает, то командная строка может ненадолго задержаться ввиду активации определенных сегментов кода.
- Когда осуществляется какая-нибудь работа с системой. В этом случае следует винить вредоносное ПО, что загружается из сети.
Я не могу использовать команду msg в cmd (или пакет, если на то пошло). как я могу это исправить?
Пока в cmd или создании командного файла я не могу использовать команду msg
. Когда я пытаюсь использовать его, он возвращает ошибку msg is not recognized as an internal or external command, operable program or batch file
. “Я уверен, что ошибка в том, что я потерял msg.exe
в system32, так что может кто-нибудь показать, как это получить? Я запускаю Windows 8.1.
msg.exe
не доступен на всех платформах Windows во всех средах.
Существует только %SystemRoot%System32msg.exe
(64-разрядная %SystemRoot%SysWOW64msg.exe
), но нет %SystemRoot%SysWOW64msg.exe
(32-разрядная версия) для Windows 7 x64 Enterprise, из-за чего необходимо получить доступ к 64-разрядному msg.exe
из в 32-битном командном процессе, используя %SystemRoot%Sysnativemsg.exe
.
Дополнительные сведения о System32
, SysWOW64
и Sysnative
см. В статье Microsoft о Sysnative
файловой системы
Что это значит?
Для запуска пакетного файла на 32-разрядной Windows необходимо запустить
%SystemRoot%System32msg.exe
.Командный файл, выполняемый в 64-разрядной Windows 64-разрядным
cmd.exe
должен запускать%SystemRoot%System32msg.exe
.Командный файл, выполняемый в 64-разрядной Windows 32-разрядным
cmd.exe
должен запускать%SystemRoot%Sysnativemsg.exe
.
Это зависит от ширины битов родительского процесса, начиная с cmd.exe
или командного файла, который неявно приводит к запуску cmd.exe
для исполнения командного файла, если пакетный файл выполняется в 32-разрядной или 64-разрядной среде на 64-битной Windows,
Таким образом вызывается пакетный файл с использованием явно %SystemRoot%Sysnativecmd.exe
из 32-разрядного приложения в Windows x64 или внутри пакетного файла %SystemRoot%Sysnativemsg.exe
используется на машине Windows x64 во время работы необходимо использовать Windows x86 %SystemRoot%System32cmd.exe
%SystemRoot%System32msg.exe
.
Демо-пример для первого варианта с использованием 64-разрядного интерпретатора командной строки:
Пакетный файл с именем MsgDemo.bat
:
@echo off
%SystemRoot%System32msg.exe /?
pause
вызывается из 32-разрядного процесса, выполняющегося в Windows x64, с:
%SystemRoot%Sysnativecmd.exe /C MsgDemo.bat
Демо-пример для второго варианта с правильной ссылкой msg.exe
:
@echo off
set "AppMsg=%SystemRoot%System32msg.exe"
if not "%ProgramFiles(x86)%" == "" (
rem Explicitly reference 64-bit version on Windows x64 as there is
rem no 32-bit version. But use Sysnative redirector only if the batch
rem file was started with 32-bit cmd.exe as otherwise System32 contains
rem msg.exe if it is not missing at all like on Windows 7 Home Premium.
if exist %SystemRoot%Sysnative* set "AppMsg=%SystemRoot%Sysnativemsg.exe"
)
%AppMsg% /?
set "AppMsg="
pause
Редиректор %SystemRoot%Sysnative
не существует для 64-битных процессов, только для 32-битных процессов.
%SystemRoot%Sysnative
не является каталогом. Поэтому, if exist %SystemRoot%Sysnative
не работает, просто if exist %SystemRoot%Sysnative*
.
Скопируйте файл msg.exe из любого ПК с Windows 7 из каталога system32 и прошлого целевого ПК system32.
Работа для меня отлично
Выводы
Строгое следование инструкции должно помочь. Но случается и так, что спустя некоторое время cmd.exe снова вылезает на рабочий стол. В данном случае стоит обратиться к специалистам в сервисный центр Microsoft, приложив к письму подробный отчет о сложившейся ситуации.
В статье мы лишь частично изложили материал по тому, как удалить определенную запись в автозапуске. Для борьбы с некоторыми видами зловредных кодов понадобятся углубленные знания по работе системы и эксплуатации программных комплектов. Но в большинстве случаев вышеизложенного алгоритма вполне достаточно для исправления указанного бага.