В этой заметке я покажу, как исправить ошибку c Event ID 10016 от источника DistributedCOM на компьютере с Windows 10 / Windows Server 2012 R2. Ошибка DCOM 10016 довольно часто встречается как в клиентских, так и в серверных версиях Windows, начиная еще со времен Windows XP и исправляется она одинаково, независимо от редакции Windows.
Проблема проявляется следующим образом: в журнале событий системы при загрузке компьютера или попытке запуска/установки приложения появляется следующая ошибка:
Log Name: Система
Event ID: 10016
Level: Ошибка
User: SYSTEM
Описание: Параметры разрешений для конкретного приложения не дают разрешения Локальный Запуск для приложения COM-сервера с CLSID {1CCB96F4-B8AD-4B43-9688-B273F58E0910} и APPID {AD65A69D-3831-40D7-9629-9B0B50A93843}пользователю NT AUTHORITY\система с SID (S-1-5-18) и адресом LocalHost (с использованием LRPC). Это разрешение безопасности можно изменить с помощью служебной программы управления службами компонентов.
В англоязычных версиях Windows описание ошибки такое:
The machine-default permission settings do not grant Local Activation permission for the COM Server application with CLSID
{000209FF-0000-0000-C000-000000000046} and APPID Unavailable to the user IIS APPPOOL\appIISPool SID (S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824) from address LocalHost (Using LRPC) running in the application container Unavailable SID (Unavailable). This security permission can be modified using the Component Services administrative tool.
Судя по описанию ошибки: некий пользователь (например, IIS Apppool) или система (NT AUTHORITY\система) пытается запустить некий компонент COM с помощью инфраструктуры DCOM и не может этого сделать из-за отсутствия права «Локальный Запуск» или «Локальная активация» (Local Activation Permission). В коде ошибки содержатся только коды классов COM компонента и приложения. Попробуем определить, какому именно приложению принадлежит идентификатор и предоставить права, необходимые для его запуска.
Из описания события необходимо скопировать идентификаторы CLSID и APPID. В моем случае это
CLSID : {000209FF-0000-0000-C000-000000000046}
APPID: {AD65A69D-3831-40D7-9629-9B0B50A93843}
(в некоторых случаях идентификатор приложения может быть не указан — APPID Unavailable).
Также обратите внимание каких разрешений не хватает (Local Activation permission) и для какой учетной записи (NT AUTHORITY\SYSTEM или IIS APPPOOL\appIISPool SID — S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824).
- Запустите редактор реестра (regedit.exe);
- Перейдите в ветку реестра, соответствующую вашему CLSID. У меня это HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046};В некоторых случаях нужно смотреть также в разделе реестра [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\. При удаленном подключении к реестру он будет находиться в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID.
- В параметре класса должно быть указано имя. У меня это Microsoft Word Application;Чаще всего эта проблема возникает с компонентами:
Immersive Shell
CLSID: {C2F03A33-21F5-47FA-B4BB-156362A2F239}
APPID: {316CDED5-E4AE-4B15-9113-7055D84DCC97}
RuntimeBroker
CLSID: {D63B10C5-BB46-4990-A94F-E40B9D520160}
APPID : {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} - Щелкните правой кнопкой мыши по разделу реестра и выберите пункт Permissions (Разрешения);
- Нажмите на кнопку Advanced;
- В разделе Owner (Владелец) будет указано NT Service\TrustedInstaller или System;
- Нажмите кнопку Change и укажите имя своей учетной записи администратора. Сохраните изменения;
- Обратите внимание, что имя владельца ветки сменилось на вашу учетную запись. Поставьте галку Replace owner on subcontainers and objects (Заменить владельца подконтейнеров и объектов) и нажмите “ОК”;
- В списке разрешений добавьте вашу учетную запись администратора и предоставьте ей полный доступ (Full Permissions);
- Вы предоставили права на ветку с CLSID. Теперь нужно повторить предыдущие шаги, предоставив учетной записи администратора права на ветку с вашим идентификатором APPID из текста ошибки (например, HKEY_CLASSES_ROOT\AppID\{AD65A69D-3831-40D7-9629-9B0B50A93843};
- Теперь запустите консоль управления компонентами dcomcnfg с правами администратора (Control Panel\All Control Panel Items\Administrative Tools\Component Services);
- В консоли компонентов перейдите в ветку Component Services -> Computers -> My computer -> DCOM Config. В списке компонентов найдите имя компонента, которое вы определили на втором шаге (значение в столбце Application ID должно соответствовать вашему CLSID из ошибки). Откройте свойства компонента; Если вы не можете найти свой компонент в списке, вероятно у вас 64 битная версия Windows, а запускаемый компонент является 32 битным. В этом случае нужно запустить консоль DCOM командой:
mmc comexp.msc /32
- Перейдите на вкладку Security. Все элементы управления должны быть доступными для изменения; Если открыть консоль dcomcnfg до изменения разрешений на ветку реестра, все настройки на вкладке Security окажутся заблокированы (недоступны для изменения), несмотря на то, что вы запустили консоль от имени администратора.
- В моем случае приложению не хватало прав на «Локальный Запуск» (Local Activation Permission). В секции Launch and Activation Permissions выберите Customize и нажмите кнопку Edit;
- В список доступа нужно добавить учетную запись, которой не хватало разрешений на запуск. Имя учетной записи было указано в тексте ошибки: в зависимости от текста в ошибке DCOM 10016 это может быть System, конкретный пользователь или учетка под которой запускается пул IIS (в этом случае нужно добавить доступ для локальной группы IIS_IUSR).Совет. Если в начальном логе ошибки вместо NT AUTHORITY\система была указана NT AUTHORITY\NETWORK SERVICE, необходимо дать права на локальный запуск и активацию для учетной записи NetworkService.
- Предоставьте нужные разрешения для учетной записи. Например, Local Activation -> Allow и Local Launch (Локальная активация) -> Allow;
- Перезагрузите компьютер и проверьте журналы событий. Ошибка DCOM 10016 должна исчезнуть.
Добрый день,
у меня каждый раз повторяется следующая проблема — к машине А подключен принтер (модель в данном случае значения не имеет), машина Б по сети имеет доступ к принтеру. После выключения — включения — перезагрузки принтер приходится переподключать…. Причем с первого раза это не удается , выдает «Ошибка сервера печати» и т.д… приходится несколько раз жать на Подключиться и только потом соединение устанавливается… И так каждый раз…. Системы на обеих машинах идентичны — 7ка Про…
Смотрите журналы системы на предмет ошибок, без этого что-то подсказать сложно.
Вопрос не имеет отношения к статье, лучше обсудить его на форуме.
У меня та же ошибка, только искомый ClassID находится здесь:
HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}
и отвечает за RuntimeBroker. Менять разрешения для этого элемента, давая группе администраторов полный доступ, стрёмно с точки зрения безопасности. Но я рискнул, однако в свойствах объекта DCOM на вкладке Безопасность ничего изменить нельзя. Как же быть?
У меня такая же ошибка для RuntimeBroker в W10. Свойства объекта закрыты от изменений. Предполагаю, что эта ошибка приводит к полному зависанию системы, когда прекращается реакция на любые действия мыши, клавиатуры, кнопки, и выводится только принудительным отключением питания
Попробуйте создать точку восстановления и дать себе права владельца на HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}. После этого скорее всего можно будет изменить разрешения DCOM
Евгений Анатольевич! у меня это и происходит.
Доброго времени суток!
Случилась такая печаль на windows server 2012 R2.
С тем отличием, что неизвестно APPID и неизвестно, какому компоненту DCOM не хватает прав.
Буду весьма благодарен за любую подсказку.
Вообще было бы неплохо после всех пертурбаций отобрать обратно права у админа и владельца вернуть
не получается!!!!!
Комментарий по п12 и 13
В русской локализации называется Настройка DCOM — Документ Microsoft Word 97-2003
бред, а причина появления такой ошибки? бывает и на свежей системе сыпятся такие ошибки десятками, подозреваю из-за нее детские проблемы с принтером, типа ворд и эксель печатает, а пдф — нет, есть идеи?
В DCOM Config (и 32 и 64) есть только номер APPID, разрешения в нём не приводят к исчезновению ошибки CLSID {2593F8B9-4EAF-457C-B68A-50F6B8EA6B54} APPID {15C20B67-12E7-4BB6-92BB-7AFF07997402} (рантаймброкер)
разбирайся с usb флешкой
а у меня нужная папка в службах так и не появилась
Благодарю, ошибка перестала тревожить.
В принципе у меня в системе все работает нормально, периодически мониторю журнальчик на своем севере, и наткнулся вот на эту проблему.
Люблю когда все идеально (хотя так бывает редко)
Права в «CLID» и «AppID» даны, dcomcnfg.exe запущен от имени администратора, однако у DCOM RuntimeBroker никаких изменений свойств сделать нельзя. Все заблокировано.
Не нужно ничего трогать и исправлять. Эту ошибку нужно игнорировать, о чем говорит сама Microsoft…
https://docs.microsoft.com/en-us/troubleshoot/windows-client/application-management/event-10016-logged-when-accessing-dcom
Подскажите пожайлуста как быстро пройти пунк 12
Народ эта ошибка не исправима, после всех манипуляций выше у вас она появиться снова но уже другие программы будут требовать доступ. И так почти до бесконечности.
Хорошая статья. У меня всё получилось на 2 разные Apps. Могу добавить что если Owner не TrustedInstaller, а SYSTEM то возможно и не надо менять оунера. Добавить права даст и так. Нужно сначала проверять можно ли докинуть себе прав, а дальше менять оунера если не получилось. По-моему это правильнее…
У меня нету моего компонента ({C2F03A33-21F5-47FA-B4BB-156362A2F239}), даже после mmc comexp.msc /32. Что делать подскажите пожалуйста.
Подскажите пожайлуста как быстро пройти пунк 12, не могу найти в этом огромном списке
В играх и тестах перезагружался комп и эта ошибка. Делал много чего в реестре и командной строке и т.д. Оказалось проблема в оперативке а точнее в её профиле xmp. Сбросил биос и оставил частоты по умолчанию. Проблема решилась.