Процесс COM Surrogate, почему грузит процессор и вызывает ошибки в системе
- Что за процесс dllhost.exe COM Surrogate?
- Почему dllhost.exe COM Surrogate вызывает проблемы и какие они бывают
- Как проверить COM Surrogate не является ли он вирусом
- Высокая нагрузка на процессор процессом dllhost.exe
- Отключение провайдеров Thumbnail
- Откат на точку восстановления, удаление кодеков или других программ
- Проверка целостности системных файлов
- Исправляем ошибки регистрации COM
- Дополнительные способы исправить ошибки COM Surrogate
- Дополнительные ссылки
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами успешно устранили ошибку 0xc0000098, мешавшую загрузке системы. Идем далее и сегодня я хочу вам осветить вот такую интересную ситуацию, у меня есть хобби в виде коллекционирования книг комиксов про Дональда Дака и Скруджа Макдака. У меня идет процесс их оцифровки и последующей обработки, и вот на этапе обработки я столкнулся с тем, что не могу удалить или пере заменить файлы со сканами книг. При попытке их удалить я получал ошибку "Действие не может быть выполнено, так как этот файл открыт в COM Surrogate". Давайте разбираться, что за процесс dllhost.exe COM Surrogateм, почему он может нагружать процессор или даже быть вредоносом. Обо всем по порядку.
Что за процесс dllhost.exe COM Surrogate?
COM Surrogate (COM-заместитель) - это процесс, который выполняется в операционной системе Windows и используется для управления и обеспечения безопасности приложений, основанных на технологии Component Object Model (COM). COM Surrogate представляет собой своеобразный посредник между операционной системой и COM-объектами, обеспечивая их безопасную работу и изоляцию от других процессов.
Технология Component Object Model (COM) является стандартом для разработки и использования программных компонентов в Windows. COM-объекты представляют собой независимые модули, которые могут быть использованы различными приложениями для выполнения определенных задач. Они могут быть написаны на разных языках программирования и предоставлять различные функциональные возможности.
COM Surrogate выполняет несколько важных функций:
- ✅Во-первых, он обеспечивает безопасность приложений, использующих COM-объекты. COM Surrogate работает в режиме изоляции, что означает, что если одно приложение, использующее COM-объект, завершается аварийно или содержит ошибку, это не повлияет на работу других приложений. Таким образом, COM Surrogate предотвращает возможность распространения ошибок или вредоносного кода на другие процессы.
- ✅Во-вторых, COM Surrogate выполняет функции по управлению памятью и ресурсами. Он контролирует выделение и освобождение памяти, а также управляет доступом к ресурсам компьютера. Это позволяет оптимизировать использование системных ресурсов и обеспечить стабильную работу приложений.
COM Surrogate также обеспечивает поддержку многопоточности. Это означает, что приложения могут использовать несколько потоков для параллельного выполнения задач. COM Surrogate следит за корректным выполнением потоков и предотвращает возможность конфликтов или блокировок, которые могут возникнуть при одновременном доступе к общим ресурсам. COM Surrogate запускается автоматически при необходимости. Обычно пользователь не видит этот процесс, так как он работает в фоновом режиме. Однако иногда пользователи могут заметить его в диспетчере задач или получить сообщение об ошибке, связанное с COM Surrogate.
Почему dllhost.exe COM Surrogate вызывает проблемы и какие они бывают
Давайте рассмотрим какие чаще всего встречающиеся проблемы вы можете поймать с COM Surrogate:
- Не удаляется папка или файл, у вас выскакивает сообщение "Действие не может быть выполнено, так как этот файл открыт в COM Surrogate", сообщающее вам, что файл заблокирован другим процессом. Выглядит это вот так.
- ⛔️Какая-то сторонняя программа в вашей системе стала некорректно работать
- ⛔️При установке или запуске сторонняя программа неправильно зарегистрировала объекты COM, очень часто бывает, когда ПО старое и официально не поддерживает новую ОС
- ⛔️Высокая нагрузка в системе, например у вас полностью забита вся оперативная память, в следствии чего вы можете получить внезапное прекращение работы процесса COM Surrogate
- ⛔️Ошибку COM Surrogate может вызывать и проводник Windows в котором запущены определенные папки с видео файлами и фото
- ⛔️Нельзя и забывать про вирусную активность, когда зловред маскируется под процесс COM Surrogate
Как проверить COM Surrogate не является ли он вирусом
Если у вас стали появляться ошибки COM Surrogate, вы заметили, что ваш компьютер стал сильно жужжать после установки какого-то ПО или расширения в браузер, то есть высокая доля вероятности, что в в вашу систему пробрался вирус или майнер. Первое, что вы должны сделать, это запустить "Диспетчер задач". Для этого нажмите одновременно три клавиши:
Далее вам необходимо перейти на вкладку "Подробности". Тут вам необходимо найти процесс dllhost.exe в его описании вы увидите COM Surrogate. Как видите тут не видно, откуда запущен файл, давайте это исправим.
Включим дополнительный столбец в отображении. Щелкаем правым кликом по имени любого столбца, после чего из контекстного меню выбираем "Выбрать столбцы" и поставьте галочку "Путь к образу". Это в целом полезная вещь.
В результате теперь у вас есть удобный столбец, где легко видно исполняемый файл. В моем случае dllhost.exe располагался по пути C:\Windows\SysWOW64\dllhost.exe, что нормально.
Файл dllhost.exe ссылается на легитимное место, но всегда старайтесь проверить еще его свойства. Для этого откроем его из месторасположения. В контекстном меню выберите "Открыть расположение файла".
Откройте свойства файла dllhost.exe, перейдите на вкладку "Цифровые подписи" и убедитесь, что тут в имени подписавшего стоит "Microsoft Windows". Если сертификат другой на непонятно кого или его вообще нет, то это плохо и у вас скорее всего вирус.
Так же можно с помощью PowerShell найти процессы dllhost.exe и вычислить их месторасположение. Для этого запустите PowerShell ISE и введите там:
# Получаем список всех процессов COM Surrogate
$comSurrogateProcesses = Get-Process | Where-Object { $_.ProcessName -eq "dllhost" }
# Выводим информацию о процессах
$comSurrogateProcesses | Format-Table -AutoSize ProcessName, Id, StartTime, Path, Description
# Перебираем каждый процесс COM Surrogate
foreach ($process in $comSurrogateProcesses) {
# Получаем путь к файлу процесса
$filePath = $process.Path
# Получаем информацию о сертификате файла
$certificate = Get-AuthenticodeSignature -FilePath $filePath
# Выводим информацию о сертификате
Write-Host "File: $filePath"
Write-Host "Certificate Subject: $($certificate.Status)"
Write-Host "Certificate Issuer: $($certificate.SignerCertificate)"
Write-Host "--------------------------------------------------"
}
Как видите я вижу пусть к файлу, и вижу каким сертификатом он подписан. На основании этого я вижу, что процесс COM Surrogate не является вирусом.
Высокая нагрузка на процессор процессом dllhost.exe
Если процесс dllhost.exe COM Surrogate сильно нагружает процессор и он не является вирусом, то тут есть ряд причин, данная ситуация появляется при открытии определенной папки в проводнике, возможно, в ней находится поврежденный медиа-файл или же система не может создать эскиз файла (Thumbnail).
- Первое, что можно попробовать сделать, это запустить монитор ресурсов Windows. Для этого вызовем окно "Выполнить" и ведем там:
- Перейдите на вкладку ЦП и выставите галочку на против процесса dllhost.exe. После этого щелкните на сам процесс dllhost.exe и обратите внимание на область "Связанные модули". Там могут фигурировать какие-либо файлы видео или изображений, если они есть попробуйте их удалить с компьютера. В большинстве случаев тут будут одни библиотеки, и вот с ними немного сложнее.
Если в мониторе ресурсов не удалось найти связанные модули, то можно прибегнуть к более тяжелой артиллерии в виде программы Process Explorer от Sysinternals. После скачивания утилиты, разархивируйте архив и запустите ее. Нажмите на иконку построения дерева процессов. В моем случае у меня было такое дерево процессов:
Главным был svchost.exe, в его состав шли WmiPrvSE.exe, RuntimeBroker.exe, dllhost.exe. Если навести мышку на dllhost.exe, то вы увидите какой COM-сервер запущен в рамках процесса. У меня это было:
Перейдите в свойства dllhost.exe, на вкладку "Threads". Убедитесь, что тут нет каких-то странных не системных библиотек.
Например, был случай, что у пользователя там были библиотеки Sonicmp4demux.ax (.ax - расширение, часто используемое фильтрами для DirectShow), которые были частью пакета авторинга от Roxio. По итогу было обновлено приложение Roxio и данная проблема, что процесс COM Surrogate грузит процессор ушла.
Как я выше указал у меня был задействован COM Class: Thumbnail Cache Out of Proc Server. Например, в операционной системе Windows используется специальный инструмент - диспетчер файлов, который использует COM-объекты для создания уменьшенных копий изображений и других файлов при открытии папки. Эти COM-объекты обрабатывают различные типы файлов, включая изображения и видео, и создают эскизы для их предварительного просмотра.
Однако, использование COM-объектов может вызывать проблемы. Например, если COM-объект аварийно завершает работу, то он может отключить связанный с ним процесс. В прошлом, в операционной системе Windows, эти COM-объекты, отвечающие за создание эскизов, часто вызывали сбои и нарушали работу диспетчера файлов.
Для решения этой проблемы было введено новое решение. Теперь, когда диспетчер файлов (также известный как File Explorer) нуждается в создании миниатюр, он запускает отдельный процесс, называемый COM Surrogate. Внутри COM Surrogate находится специальный COM-объект, который выполняет задачу по созданию эскизов. Если этот COM-объект выйдет из строя, то произойдет сбой только в COM Surrogate, а основной процесс File Explorer продолжит свою работу с файлами.
Такое поведение DllHost возможно при создании эскизов файлов и формирование базы по ним thumbcache_32.db и т.д. по моему система просто не может эту базу создать или сопоставить с кодеком. И действительно в моем случае, когда я с помощью внешнего сервиса в Google Chrome производил обработку картинок, то не мог сохранить их в определенную папку, а вот в соседнюю без проблем. Тут вы можете выкрутить пересоздав папку, или отключить создание миниатюр, без них можно прожить.
Еще такое видел с программой по снятию снапшотов FastStone Capture, у которой был модуль по работе с видео. Именно он и вызывал высокую нагрузку на CPU при работе с проводником системы, там пришлось обновлять утилиту.
Отключение провайдеров Thumbnail
Если пересоздание папки не помогло, то как я и писал выше причиной может быть связана с неисправностью расширений оболочки; это может быть связано либо с поврежденными папками или файлами, которые не удалось проанализировать, либо с тем, что расширение оболочки содержит нестабильный код. Вы можете управлять расширениями оболочки с помощью ShellExView, которая входит в пакет NirLauncher (сам пакет под номером 65), чтобы вы могли попытаться отключить те, которые вам не нужны для нормальной работы, то есть все те, которые не принадлежат Microsoft.
Расширения оболочки делают такие вещи, как добавление пунктов контекстного меню, создание эскизов изображений и видео; а также создание информации для столбцов в проводнике Windows (например, страниц PDF) и его свойств.
" Я использовал ShellExView и заметил только один элемент типа "Thumbnail", который не был предоставлен MIcrosoft и касался видео — "Поставщик миниатюр DivX". Звучит не связанно (в конце концов, DivX и MKV — разные вещи), за исключением того, что в описании указано "Поставщик эскизов DivX MKV/AVI", а его отключение устранило проблему.
Если мне нужны миниатюры для файлов .mkv, я могу просто переустановить/восстановить DivX снова. Честно говоря, файлы .mkv воспроизводятся просто отлично, и в любом случае эти миниатюры стоили довольно дорого, поэтому я с радостью проживу без них."
Откат на точку восстановления, удаление кодеков или других программ
Если у вас совсем недавно появилась ошибка "Прекращена работа программ COM Surrogate", то с высокой долей вероятности вы недавно производили установку какого-то приложения. Чтобы это выяснить вам нужно проверить даты.
Если таковое место было, то самым быстрым методом вернуть все обратно является использовать точки восстановления системы. Либо вы можете попробовать удалить те программы после которых у вас появились проблемы с процессом COM Surrogate.
Очень часто причиной ошибки могут быть:
- K-Lite Codec Pack
- Просмотрщики PDF
- VLC
Проверка целостности системных файлов
Еще хорошей практикой профилактики и устранения ошибок COM Surrogate является проверка вашей системы на предмет повреждения системных файлов, сделать это просто. Запустите командную строку от имени администратора и введите вот такую длинную команду:
В идеале у вас тут не должно быть ни каких ошибок, но если они есть, то будут устранены. Бывают случаи. что повреждения фатальные, как у меня было с ошибкой 0x80073701 и там пришлось изучать дополнительные коды ошибок, изучать другие методы.
Исправляем ошибки регистрации COM
Как я описывал выше очень важна правильная работа COM-объектов в Windows. Можно попробовать проверить систему на их ошибки, тут существует много утилит, я привык к старой, доброй программке Ccleaner. Выделите обязательно пункт "Ошибки ActiveX и Class", остальные по желанию, я оставляю вот так. Нажмите кнопку поиск проблем.
По результатам сканирования вы можете увидеть большое количество ошибок Activex/COM. Попробуйте их исправить, нажмите кнопку "Посмотреть выбранные проблемы"
Нажимаем "Да".
Выбираем нужное для вас место в проводнике Windows и задаем имя.
Нажмите "Исправить отмеченные", 205 ошибок будут устранены.
Я всегда сканирую реестр на новые ошибки, так как могут выявиться еще, как видите появились еще 21.
Вы должны добиться отображения 0 ошибок.
Дополнительные способы исправить ошибки COM Surrogate
Если вы дошли до данного раздела, то вы все еще не исправили проблему с процессом dllhost.exe, что я еще могу вам посоветовать:
- Попробуйте проверить вашу систему на вирусы, Касперским, Dr Web или утилитой AdwCleaner
- Попробуйте отключить DEP для dllhost.exe
- Изучите журналы Windows, там могут быть дополнительные события с ошибками, которые помогут изучить проблему шире и найти решение
- Попробуйте произвести установку обновлений в Windows, так как вполне возможно, что это баг и его уже давно поправили
Надеюсь, что вам удалось понять назначение процесса dllhost.exe COM Surrogate, что это не вирус, но с ним могут быть нюансу. Если вы нашли свой метод, то просьба поделиться им в комментариях, давайте помогать друг другу. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Дополнительные ссылки
- http://forum.oszone.net/thread-157094-2.html
- https://superuser.com/questions/371992/windows-explorer-crashes-when-loading-a-folder-that-folder-is-my-desktop