Комплектующие, запчасти и расходники для серверов, компьютеров и оргтехники

Проезд Березовой рощи, 8 (м.Полежаевская или м.Динамо)

Время работы: Пн-Пт 10-18

8 (495) 740-88-74
8 (910) 000-53-95

email: megagertz@bk.ru

Причины возникновения ошибки COM Surrogate и способы ее устранения

Многие пользователи операционных систем Windows 7 и Windows Vista хоть раз сталкивались с довольно раздражающей проблемой - при попытке просмотра картинок, видео или других мультимедийных файлов и даже содержащих их папок неожиданно выскакивает окно



извещающее об остановке системного сервиса COM Surrogate (dllhost.exe). Также возможен другой, не менее неприятный вариант - система начинает ощутимо подтормаживать, а диспетчер задач показывает, что процесс COM Surrogate потребляет значительную часть ее ресурсов.

Для начала давайте определимся что же это за COM Surrogate и для чего он нужен.

Dllhost.exe – системный процесс ОС Microsoft Windows, отвечающий за управление приложениями использующими COM+ (Microsoft Transaction Server) и динамически подключаемые библиотеки. В том числе он используется Internet Information Services (IIS) и загружает среду .NET. Его обычное расположение C:\Windows\System32, а размер составляет 5,120 байт.

Программный пакет COM+ часто используется разработчиками стороннего ПО из за поддержки распределенных приложений, а также других его свойств, таких как управление транзакциями, в частности способности объекта COM+ "жить" внутри своей собственной транзакции или быть частью большой группы аналогичных объектов, которые принадлежат одной транзакции и пулинга объектов и ресурсов.

Пулинг это довольно мощный инструмент разработчика, который позволяет освобождать ресурсы и объекты используемые COM+ сохраняя ссылку на них в приложении для мгновенного повторного обращения. Из этих его преимуществ вытекает и первый вариант возникновения ошибки COM Surrogate - неправильное использование распределителя ресурсов может привести к чрезмерному использованию приложением или библиотекой памяти и/или процессора, если установленные ими связи с объектами и ресурсами не будут вовремя сбрасываться.

Часто такую проблему вызывают устаревшие версии кодеков, в частности DivX и FFDShow, видеодрайвера, программ воспроизведения мультимедиа-файлов и записи CD/DVD-дисков, например Nero. Иногда виноватыми оказываются и, казалось бы не имеющие никакого к этому отношения программы вроде 7zip.

В данном случае решением, очевидно, является установка их последней версии или удаление.


Временным, но достаточно эффективным решением может оказаться предотвращение выполнения данных (Data Execution Prevention, DEP).

DEP не позволяет приложению исполнять код из области памяти, помеченной как «только для данных», что в нашем случае означает запрет на использование оперативной памяти сервисом dllhost. Это не является оптимальным выходом, так как может привести к проблемам открытия некоторых системных окон, но по крайней мере при исчезновении ошибки COM Surrogate, покажет что проблема все таки в обработке COM+ запросов.

Управление DEP расположено: Пуск - Панель управления - Система / Свойства системы, где на вкладке Дополнительно в разделе Быстродействие надо выбрать Параметры быстродействия и там перейти на вкладку Предотвращение выполнения данных. В итоге вы увидите следующее окно:


где вам надо будет установить переключатель на "Включить DEP для всех программ и служб, кроме выбранных ниже" и нажав на кнопку Добавить указать расположение файла C:\Windows\System32\dllhost.exe. Нажмите ОК, закройте все окна и проверьте исчезла ли ошибка COM Surrogate.


В случае если данные действия не возымели успеха советуем вам начать дальнейшие попытки восстановить работоспособность ОС с проверки системных файлов. Для этого запустите окно CMD в режиме администратора введя cmd или "командная строка" в поле Поиск меню Пуск, а затем кликнув на появившемся файле правой кнопкой мыши и выбрав "запуск от имени администратора". (В Windows 8 и 10 окно cmd вызывается при помощи встроенного меню Win+X, в котором надо выбрать Командная строка (администратор).)

В открывшемся окне надо будет последовательно ввести следующие команды (разумеется дожидаясь выполнения предыдущей):

  1. sfc /scannow
  2. chkdsk
  3. DISM.exe /Online /Cleanup-image /ScanHealth
  4. DISM.exe /Online /Cleanup-image /RestoreHealth