Обновлено 19.08.2021
Доброго времени суток, уважаемые читатели, сегодня решаем ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {D63B10C5-BB46-4990-A94F-E40B9D520160} и APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} в Windows server 2012 R2.
Ошибка 10016 в windows 10 и Windows Server
На сервере Windows Server 2012 R2 постоянно возникает ошибка 10016.
Имя журнала: Система
Источник: DistributedCOM
Код: 10016
{D63B10C5-BB46-4990-A94F-E40B9D520160}
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
{D63B10C5-BB46-4990-A94F-E40B9D520160}
и APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276} или {316CDED5-E4AE-4B15-9113-7055D84DCC97} или {4839DDB7-58C2-48F5-8283-E1D1807D0D7D}
пользователю NT AUTHORITYСИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно). Это разрешение безопасности можно изменить с помощью средства администрирования служб компонентов.
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{6B3B8D23-FA8D-40B9-8DBD-B950333E2C52}
and APPID
{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}
to the user NT AUTHORITYLOCAL SERVICE SID (S-1-5-19) 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.
Данная ошибка выскакивает, когда какая-то из утилит не может обратиться к DCOM объекту, чаще всего, это связано с недостаточностью разрешений. Был реализован шаблон кодирования, где код сначала пытается получить доступ к компонентам DCOM с одним набором параметров. Если первая попытка не удалась, она пытается снова с другим набором параметров. Причина, по которой он не пропускает первую попытку, заключается в том, что существуют сценарии, в которых он может быть успешным. В этих сценариях это предпочтительнее. Если вы не в курсе, что такое COM объекты и DCOM, то если по простому, это концепция для создания программного обеспечения на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно. На основе COM были созданы ActiveX, DCOM, COM+, DirectX, .Net.
- {316CDED5-E4AE-4B15-9113-7055D84DCC97} — Кнопка пуск (Immersive Shell) — интерфейс метро
- {4839DDB7-58C2-48F5-8283-E1D1807D0D7D} — ShellServiceHost
- {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} — RuntimeBroker
Подробнее вы можете почитать в вики https://ru.wikipedia.org/wiki/Component_Object_Model
Сначала нужно обновить Windows через центр обновления, и если не поможет, то делаем по очереди предложенные решения:
- Назначаем недостающие права на ветку с GUID номером {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} или другим, зависит от вашей ситуации с кодом ошибки 10016
- Удаление некоторых ключей реестра
- Использование скрипта PowerShell
Как исправить ошибку 10016 через назначение прав в реестре
- Сразу логинимся на проблемный сервер под администратором, чтобы не вводить всякий раз имя и пароль. Запускаем Regedit.
- Запускаем поиск (CTRL+F) и ищем второй из GUIDов в описании ошибки, т.е. APPID. В данном случае это «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}».
- Первый результат поиска должен быть в ключе HKEY_CLASSES_ROOTAppID. Наступаем на найденный GUID в левой панели и щелкаем правой кнопкой, выбираем Разрешения, а затем кнопку Дополнительно.
- В верхней части дополнительных параметров указан текущий владелец TrustedInstaller. Нажимаем рядом с ним ссылку Изменить.
- Нам нужно сделать владельцем локальную группу Администраторы. Затем кнопки Дополнительно, Поиск и выбираем в результатах поиска Администраторы.
- Ставим флажок «Заменить владельца подконтейнеров и объектов», кнопка ОК.
- После смены владельца мы можем изменять разрешения. В окне Разрешения на вкладке Безопасность даем для СИСТЕМА и Администраторы разрешение на полный доступ. ОК.
- Далее смотрим для нашего ключа HKEY_CLASSES_ROOTAppID{9CA88EE3-ACB7-47C8-AFC4-AB702511C276} значение параметра «(По умолчанию)» = «RuntimeBroker«.
8. В диспетчере серверов в правом верхнем углу меню Средства -> Службы компонентов. Открываем Компьютеры –> Мой компьютер –> Настройка DCOM. Правый клик по строке из п.7 RuntimeBroker, Свойства.
9. На вкладке Безопасность. В разделе Разрешения на запуск и активацию кнопка Изменить. Для группы СИСТЕМА разрешаем Локальный запуск и Локальная активация. ОК. Если вам runtimebroker не дает отредактировать настройки, то вам нужно дать права на него в реестре Windows
Открываем редактор реестра Windows. Переходим в ветку
HKEY_CLASSES_ROOTAppIDRuntimeBroker.exe
щелкаем по нему правым кликом и выбираем свойства.
Даем права для группы администраторы (Полный доступ)
Если не даст вам поставить, то вам нужно заменить владельца Trustinstaller на себя или группу администраторы. Как только дали права, идем опять в компоненты DCOM и выставляем права, как описывал выше.
10. Перезагружаем сервер, проверяем логи, по сути ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {D63B10C5-BB46-4990-A94F-E40B9D520160} и APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} вы не должны больше увидеть.
Как исправить ошибку 10016 через удаление ключей из ветки OLe
Данный метод подразумевает удаление нескольких ключей реестра, которые отвечают за проверку прав на COM объекты. Нас будет интересовать ветка реестра:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOle
Ole — эта ветка управляют параметрами запуска по умолчанию и разрешениями доступа, а также возможностями безопасности на уровне вызовов для приложений на основе COM, которые не вызывают CoInitializeSecurity. Только администраторы, создатель объекта и система имеют полный доступ к этой части реестра. Все остальные пользователи имеют доступ только для чтения.
Перед тем, как вы будите вносить изменения я вам советую на всякий случай сделать резервную копию реестра или ветки.
Щелкаем по контейнеру Ole правым кликом и из контекстного меню выберите пункт Экспорт.
Задаем имя экспортируемого ключа. В случае проблем вы всегда сможете его импортировать и вернуть все к исходному состоянию.
Теперь, чтобы исправить ошибку 10016 в Windows 10 или как у меня в Windows Server 2012 R2 или выше, вам необходимо удалить четыре ключа:
- DefaultAccessPermission — Определяет список разрешений доступа по умолчанию для компьютера. Устанавливает список контроля доступа (ACL) участников, которые могут получить доступ к классам, для которых нет настройки AccessPermission . Этот ACL используется только приложениями, которые не вызывают CoInitializeSecurity и не имеют значения AccessPermission под своим ключом AppID. Среда выполнения COM на сервере проверяет ACL, описываемый этим значением, при олицетворении вызывающей стороны, которая пытается подключиться к объекту, и ее успех определяет, разрешен или запрещен доступ. Если проверка доступа не пройдена, соединение с объектом будет запрещено. Если это именованное значение не существует, только серверу участника и локальной системе разрешается вызывать сервер. По умолчанию это значение не содержит записей. Только принципал сервера и система могут вызывать сервер. Это значение обеспечивает простой уровень централизованного администрирования доступа по умолчанию к подключенным объектам на компьютере.
- DefaultLaunchPermission — Определяет список запуска по умолчанию для компьютера. Определяет список контроля доступа (ACL) участников, которые могут запускать классы, которые не указывают свой собственный ACL через значение реестра LaunchPermission. Права доступа по умолчанию следующие: Администраторы: разрешить запуск, СИСТЕМА: разрешить запуск, ИНТЕРАКТИВНО: разрешить запуск. Если значение LaunchPermission установлено для сервера, оно имеет приоритет над значением DefaultLaunchPermission . После получения локального или удаленного запроса на запуск сервера, у которого ключ AppID не имеет собственного значения LaunchPermission, проверяется ACL, описанный этим значением, при олицетворении клиента, и его успех разрешает или запрещает запуск кода класса.Это значение обеспечивает простой уровень централизованного администрирования запуска по умолчанию для доступа к другим незарегистрированным классам на компьютере. Например, администратор может использовать инструмент DCOMCNFG для настройки системы, чтобы разрешить доступ только для чтения для опытных пользователей. Поэтому OLE будет ограничивать запросы на запуск кода класса членами группы «Опытные пользователи». Впоследствии администратор может настроить разрешения на запуск для отдельных классов, чтобы предоставить возможность запуска кода класса другим группам или отдельным пользователям по мере необходимости.
- MachineAccessRestriction — Устанавливает политику ограничения на уровне компьютера для доступа к компоненту. Принципалы, которым здесь не предоставлены разрешения, не могут получить их, даже если разрешения предоставляются значением реестра DefaultAccessPermission или функцией CoInitializeSecurity. По умолчанию члены группы «Все» могут получать разрешения на локальный и удаленный доступ, а анонимные пользователи могут получать разрешения на локальный доступ.
- MachineLaunchRestriction — Устанавливает политику ограничения на уровне компьютера для запуска и активации компонента. Принципалы, которым здесь не предоставлены разрешения, не могут получить их, даже если разрешения предоставляются значением реестра DefaultAccessPermission или функцией CoInitializeSecurity. По умолчанию администраторы могут получать разрешения на локальный и удаленный запуск и активацию, а члены группы «Все» могут получать разрешения на локальную активацию и запуск.
Подробнее о данной ветке можно почитать по адресу https://docs.microsoft.com/en-us/windows/win32/com/hkey-local-machine-software-microsoft-ole
теперь находим все эти ключи, щелкаем по ним правым кликом мыши и удаляем со спокойной душей, далее я вам советую перезагрузить вашу систему. В подавляющем количестве случаев ошибка с кодом 10016 у вас больше не появится.
Исправление ошибки 10016 через PowerShell
Если вам не удалось изменить запуск службы для системы, то можно все поправить и избавиться от сообщений «APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
пользователю NT AUTHORITYСИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно)» с помощью скрипта PowerShell. Открываем ссылку с Microsoft
https://gallery.technet.microsoft.com/Grant-Revoke-Get-DCOM-22da5b96
Или во тут
Скачиваем тут сценарий DCOMPermissions.psm1
Кладем данный модуль в нужную вам папку. Далее вы открываете консоль PowerShell и переходите в месторасположение данного модуля, после чего его нужно импортировать:
Import-Module .DCOMPermissions.psm1
Grant-DCOMPermission -ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» -Account «SYSTEM» -Type Launch -Permissions LocalLaunch,LocalActivation -OverrideConfigurationPermissions
Если ошибок не вышло, то значит все успешно применено, перезагрузка не потребуется.
Далее вы можете посмотреть примененные разрешения:
Get—DCOMPermission —ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» —Type Launch
Вы увидите права у системы, у нее будет SID S-1-5-10.
На этом у меня все, мы успешно устранили ошибку DCOM 10016. Я должен подчеркнуть, что ошибка DCOM 10016 вряд ли повлияет на производительность вашей системы. В очень старые времена, когда Microsoft впервые представила «Distributed» в компонентной объектной модели, были уязвимости. Однако эти уязвимости были исправлены, и DCOM теперь безопасен. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Компьютерные системные неполадки распределяются на критические для функционирования ПК, которые ограничивают работоспособность устройства, и на ошибки, не влияющие на производительность компьютера, но дают определённый дискомфорт при его эксплуатации. Одной из неполадок, причисляющихся к сбоям второй серии, является ошибка 10016 DistributedCOM, свойственная компьютерам, работающих на ОС Windows 10. О причинах появления, вариантах устранения ошибки расскажем в этой статье.
Причины возникновения сбоя
Как уже сказано, ошибка 10016 причисляется к категории некритичных, зачастую её появление не влияет на возможность дальнейшей эксплуатации ПК, её негатив выражается систематическим показом ошибки на экране при запуске компьютера. Многие пользователи даже не задумаются о её исправлении. Но ошибка имеет накопительное действие, что при длительном игнорировании неполадки сможет вылиться в снижение скорости работы ПК и появление «тормозов» системы. Как правило, возникает ошибка DistributedCOM 10016 в Windows 10, показываясь в реестре «Журнала событий» красной круглой иконкой сбоя со знаком восклицания. Причиной появления ошибки категории DistributedCOM с кодом 10016 является некорректность работы службы DCOM в результате отсутствия соответствующих требованиям системы допусков.
На вопрос, почему в Windows отсутствуют разрешения и допуски, заложенные в систему разработчиками, однозначного ответа не существует, но в качестве причин выделяют некорректную загрузку и установку приложений, предшествующую ошибке, воздействие вирусов или наличие фрагментарного мусора на винчестере. Независимо от причины появления, если в «Журнале событий» в разделе «Система» присутствует ошибка 10016, во избежание появления более серьёзных неполадок ПК игнорировать её не стоит.
Инструкция по устранению ошибки
Итак, как исправить неполадку с кодом 10016 DistributedCOM в операционной системе Windows 10. Сначала нужно заняться проверкой ПК на вирусы и оптимизировать работу компьютера. С этой целью рациональней всего использовать популярный и эффективный софт CCleaner, обладающий мощной функциональностью, позволяющей оптимизировать работу ПК, с помощью очистки системы от мусора. Также следует проверить систему на наличие вирусов программой, установленной на ПК для защиты системы или установить таковую.
В некоторых случаях исправить ошибку 10016 удаётся элементарной установкой и активацией работы специальной утилиты Repair Tool, разработанной корпорацией Microsoft для устранения критичных ошибок в Windows, имеющих системный характер. Если после применения утилиты ошибка не ушла, тогда придётся устранять ошибку в ручном режиме, который предполагает предварительное обеспечение доступа к внесению изменений в параметры DCOM. Вот что нужно сделать:
- Откройте вкладку «Выполнить», которая вызывается нажатием комбинации клавиш WIN и R.
- В строке «Открыть» пропишите команду REGEDIT и подтвердите нажатием кнопки OK.
- Через вкладку «Правка» открывшегося окна задайте команду «Найти».
- Дальше потребуется открыть «Журнал событий», скопировать оттуда буквенно-цифровой шифр их шестнадцати знаков и вставить его в поисковую строку, с подтверждением команды запустить поиск.
- По найденному программой каталогу потребуется кликнуть правой клавишей мышки, выбрать из выпадающего списка пункт «Разрешения», перейти во вкладку «Дополнительно», в качестве владельца определить модуль «Администраторы» и обеспечить «Полный доступ» к задачам реестра, отметив позицию галочкой.
Выполненные манипуляции дадут возможность внесения владельцем ПК в реестр DCOM изменений, что необходимо для устранения ошибки. Процедура устранения ошибки заключается в выполнении следующих операций:
- Аналогично предыдущей инструкции открываем консоль «Выполнить», где потребуется ввести команду DMCONFIG, и подтвердить её клавишей Enter.
- В открывшемся окне через «Службы компонентов» перейти последовательно из раздела «Компьютеры» во вкладку «Мой компьютер», где появится доступ к меню «Настройка DCOM».
- В настройках потребуется отыскать файл с названием IPBusEnum, зайти в «Свойства» объекта, кликнув по нему правой клавишей мышки и выбрать вкладку «Безопасность».
- Среди открывшихся доступных задач выбрать «Изменить», относящуюся к разделу «Разрешение на запуск и активацию», в окне «Группы и пользователи» отметить позицию «Система» и предоставить пользователю права на «Локальный запуск», поставив напротив этой строки галочку. Если пользователь под именем «Система» или System отсутствует в списке, его потребуется создать, применив команду «Добавить».
- Заключительный этап работы: подтверждение изменений кнопкой «ОК» и перезапуск ПК.
После перезапуска Windows, окно с ошибкой больше не должно появляться, а проверить результат можно посредством входа в «Журнал событий» и просмотром списка на наличие ошибок.
Подведение итогов
Даже ошибки, не влияющие на возможность эксплуатации компьютера, являются важным сигналом для пользователя, игнорировать который недопустимо в силу опасности перерастания незначительной неполадки в более критические для ПК. Незначительные неполадки значительно проще исправить, чем накапливать их, тем более, что они могут перерасти в более крупные.
Что касается ошибки 10016 DistributedCOM, то её устранение не занимает много времени и не требует реализации трудоёмких задач: выполнив манипуляции по описанной инструкции, можно за несколько минут устранить неполадку.
Как исправить ошибку DistributedCOM Error 10016 в Windows 10
Ошибка DistributedCOM Error 10016 является общей проблемой Windows почти для всех версий, начиная с Windows XP. Ошибка не приводит к немедленному отказу системы. Вы не будете страдать от внезапного синего экрана смерти. Фактически, ошибка DCOM 10016 является неопасной. Однако , это не значит, что ты не можешь это исправить. Итак, вот как исправить ошибку DistributedCOM Error 10016 в вашей системе Windows 10.
Во-первых, что такое DistributedCOM, и почему он показывает ошибку?
Distributed Component Object Model (DCOM) является неотъемлемой частью сетевого взаимодействия на компьютерах с операционной системой Windows. Это запатентованная технология Microsoft, которая срабатывает каждый раз, когда приложение подключается к интернету. Традиционный COM может получить доступ к информации только на той же машине, в то время как DCOM может получить доступ к данным на удаленных серверах.
Например, многие сайты и службы используют сценарии доступа к удаленному серверу. Когда ваша система делает запрос с помощью сценария или иным образом, DCOM пересылает запрос на определенный объект сценария. Учитывая, как часто современные приложения используют сетевое подключение, и наше повсеместное использование компьютеров, вы можете убедиться, что DCOM используется очень часто.
Ошибка DCOM обычно возникает, когда приложение или служба пытается использовать DCOM, но не имеет соответствующих разрешений. Большую часть времени ошибки DCOM не будут влиять на вашу систему, за исключением засорения Event Viewer. Поскольку большинство пользователей Windows 10 не проверяют Event Viewer регулярно, ошибки DCOM не о чем беспокоиться. Тем не менее, система без ошибок лучше, чем наоборот.
Учитывая это, приведем один простой способ устранения ошибки DCOM Error 10016, и еще одно несколько более длинное исправление.
1. Редактирование реестра Windows для исправления ошибки DCOM Error 10016
Простая настройка реестра иногда позволяет немедленно исправить ошибку DCOM Error 10016.
Перед редактированием реестра я рекомендую сделать резервную копию.
Введите registry в строке поиска меню Пуск. Перейдите в меню Файл > Экспорт, установите для параметра Экспорт диапазон значение Все, а затем Сохранить реестр Windows в удобном месте. Следующее исправление не повредит ваш компьютер, но лучше всего сделать резервную копию для восстановления в случае непредвиденной ошибки.
Итак, давайте попробуем исправить ошибку.
- Введите registry в строке поиска меню Пуск и откройте Редактор реестра.
- Перейдите по ссылке HKEY_LOCAL_MACHINESOFTWAREMicrosoftOle. Адрес можно скопировать и вставить в адресную строку редактора реестра.
- Удалите следующие четыре ключа реестра:
DefaultAccessPermission
DefaultLaunchPermission
MachineAccessRestriction
MachineLaunchRestriction
- Закройте редактор реестра Windows, а затем перезагрузите систему.
С этого момента в системе не должно быть ошибки DCOM Error 10016.
2. Разрешение DCOM на выполнение определенных действий при возникновении ошибок
Если это не сработает, то вы сможете найти гораздо более длинный выход из сложившейся ситуации. Сообщение об ошибке DCOM Error 10016 в средстве просмотра событий содержит информацию о конкретном приложении или процессе, создающем проблему.
Загрузите средство просмотра событий.
Перейдите в Журнал Windows > Система и найдите вашу последнюю ошибку DCOM 10016. Дважды щелкните сообщение об ошибке, чтобы развернуть его.
Вкладка General (Общие) объясняет причину ошибки 10016 и содержит список CLSID (Class ID) и APPID (Application ID). Символьные строки CLSID и APPID выглядят случайно. Однако с их помощью можно определить, какое приложение или служба является источником ошибки 10016.
Найдите CLSID и APPID в редакторе реестра
Вот как найти службу в Редакторе реестра.
Сначала выделите CLSID в средстве просмотра событий, а затем нажмите CTRL + C для копирования. Затем откройте Редактор реестра. Поиск в реестре осуществляется по следующим параметрам:
HKEY_CLASSES_ROOTCLSID{Вставьте Ваш CLSID здесь}
Например: HKEY_CLASSES_ROOTCLSID{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}.
Помните, что адрес можно скопировать и вставить в адресную строку редактора реестра. По окончании поиска CLSID можно выполнить перекрестные ссылки на APPID из сообщения об ошибке с AppID, указанным в CLSID.
Ошибка DCOM 10016 в примере связана с Runtime Broker, который является одной из наиболее распространенных причин этой ошибки.
Редактирование разрешений CLSID
В левом списке записей реестра щелкните правой кнопкой мыши CLSID, относящийся к ошибке, затем выберите Permission > Advanced (Разрешение > Дополнительно). Отсюда вы можете отредактировать права доступа к службе.
Выделите пункт Administrators (Администраторы) и выберите Edit (Редактировать). Переключите основные разрешения на Full Control, а затем нажмите OK > Apply > OK.
Теперь перезапустите систему.
После завершения перезапуска введите Component Services (Службы компонентов) в строку поиска меню Пуск и запустите сервис. Перейдите к Компьютеры > Мой компьютер > DCOM Config.
Вы увидите длинный список сервисов, использующих DCOM каким-либо образом. Найдите службу, используя имя и APPID, щелкните правой кнопкой мыши и выберите Properties > Security.
В разделе Launch and Activation Permissions выберите Edit > Add > Add a Local Service > Apply. Теперь поставьте галочку в поле Local Activation, нажмите OK и перезагрузите систему еще раз.
Ух ты! Все сделано, процесс завершен.
Примечание: К сожалению, если у вас несколько причин ошибки 10016, вам придется выполнять этот процесс для каждой комбинации CSLID/APPID.
DCOM Error 10016 решена
Надеюсь, это помогло вам исправить ошибку распределенного COM 10016. Должен подчеркнуть, что ошибка DCOM 10016 вряд ли повлияет на производительность вашей системы.
Спасибо, что читаете! На данный момент большинство моих заметок, статей и подборок выходит в telegram канале «Левашов». Обязательно подписывайтесь, чтобы не пропустить новости мира ИТ, полезные инструкции и нужные сервисы.
Респект за пост! Спасибо за работу!
Хотите больше постов в блоге? Подборок софта и сервисов, а также обзоры на гаджеты? Сейчас, чтобы писать регулярно и радовать вас большими обзорами, мне требуется помощь. Чтобы поддерживать сайт на регулярной основе, вы можете оформить подписку на российском сервисе Boosty. Или воспользоваться ЮMoney (бывшие Яндекс Деньги) для разовой поддержки:
Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.
Возникновение ошибки DistributedCOM с кодом события Event ID 10016 означает, что приложение пыталось запустить сервер DCOM, но в текущей учетной записи пользователя нет требуемых разрешений для этого. Ошибка известна еще с Windows 7, однако не решается при обновлении системы до Windows 8.1 и 10.
Эта системная ошибка, в сообщении которой содержаться CLSID и APPID, и в большинстве случаев совершенно безвредная, но ее постоянное присутствие может раздражать.
Но прежде чем приступить к устранению неполадок, проверьте состояние блока питания ПК. Если используется разгон процессора, видеокарты или ОЗУ, уменьшите установленные параметры или вообще отключите. Кроме того, убедитесь, что драйверы видеокарты обновлены по последней версии.
Добавление полных разрешений приложению, вызывающего ошибку
Значения CLSID и APPID уникальны для каждого приложения. С их помощью можно идентифицировать приложение, вызывающего ошибку DistributedCOM 10016.
Когда определите, какое приложение вызывает проблемы, все, что нужно сделать, это предоставить ему достаточные разрешения. Для этого выполните следующие шаги.
Откройте Редактор реестра командой regedit, запущенной из окна Win + R.
Перейдите в раздел HKEY_CLASSES_ROOT, затем в CLSID.
Найдите папку с идентификатором CLSID, который указан в сообщении об ошибке DCOM.
Теперь щелкните правой кнопкой мыши на нем и выберите «Разрешения», затем нажмите на кнопку «Дополнительно».
Перейдите на вкладку «Владелец» и измените его на группу «Администраторы». Отметьте флажком опцию «Заменить владельца подконтейнеров и объектов». Примените изменения нажатием на «ОК».
Вернувшись в окно разрешений, кликните на кнопку «Добавить». Нажмите Дополнительно – Поиск и выберите учетную запись «Все». Снова в окне разрешений выберите «Все» из списка пользователей и предоставьте ей полный доступ в столбце «Разрешить». Примените изменения на «ОК».
После этого в редакторе реестра перейдите по пути:
HKEY_LOCAL_MACHINE – Software – Classes – AppID.
Перейдите в раздел, содержащий тот же идентификатор приложения, что указан в сообщении об ошибке. Щелкните по нему правой кнопкой мыши и выберите «Разрешения», затем нажмите на «Дополнительно».
Повторите указанные шаги для предоставления приложению полного доступа.
Нужно отметить, что при просмотре папок CLSID и APPID увидите раздел с именем службы, вызывающей ошибку DCOM 10016.
Затем перейдите в Панель управления командой control из окна Win + R.
Переключитесь на крупные значки и перейдите в раздел «Администрирование».
Разверните вкладку «Службы компонентов». В центральном окне разверните вкладку «Компьютеры», затем Мой компьютер.
Теперь найдите службу, вызывающую ошибку, щелкните ее правой кнопкой мыши и выберите «Свойства». Откройте вкладку Безопасность.
Если разрешения были правильно установлены в реестре, появится возможность изменить параметры для всех трех категорий (на запуск и активацию, доступ и изменение настроек). Если какой-либо из них выделен серым цветом, повторите шаги по предоставлению полного доступа.
После выбора настроек для трех категорий, выберите «Изменить» для разрешения на запуск и активацию. Если отобразится предупреждение о том, что одна или несколько прикрепленных записей доступа имеют неправильный тип, щелкните кнопку «Удалить». Это означает, что разрешения в реестре были установлены на значение, отличное чем «По умолчанию», которое требуется для завершения исправления.
В новом окне найдите учетную запись «Система» в списке пользователей. Если она не существует, щелкните на «Добавить». Введите «Система» и кликните на «ОК».
Теперь выберите запись «Система», установите флажок в столбце разрешить рядом к локальным запуском и активацией.
Также можете увидеть локальный доступ вместо этого, поэтому просто убедитесь, что есть проверка для этого элемента в столбце разрешить. Для сохранения нажмите на «ОК».
Повторите шаги для остальных категорий – разрешения доступа и изменения настроек.
Затем повторите все шаги для других значений ClSID и AppID, перечисленный в журнале событий.
После завершения перезагрузите компьютер. Попытайтесь запустить программу, которую ранее не удавалось из-за ошибки DistributedCOM с Event ID 10016.
Удаление разделов реестра
Ошибку DCOM также может вызвать конфликт между разделами. Для ее решения попробуйте их удалить. Но перед этим сделайте резервную копию реестра.
Откройте Редактор реестра с помощью поисковой системы Winsows, предоставив ему доступ администратора.
Перейдите в раздел HKEY_LOCAL_MACHINE –SOFTWARE – Microsoft – Ole.
Теперь удалите разделы:
- DefaultAccessPermission;
- DefaultLaunchPermission;
- MachineAccessRestriction;
- MachineLaunchRestriction.
Сохраните изменения и перезагрузите систему. После перезагрузки в реестр будут записаны значения по умолчанию, что должно устранить ошибку DistributedCOM с кодом события 10016.
В этой заметке я покажу, как исправить ошибку c Event ID 10016 от источника DistributedCOM на компьютере с Windows 10 / Windows Server 2012 R2. Ошибка DCOM 10016 довольно часто встречается как в клиентских, так и в серверных версиях Windows, начиная еще со времен Windows XP и исправляется она одинаково, независимо от редакции Windows.
Проблема проявляется следующим образом: в журнале событий системы при загрузке компьютера или попытке запуска/установки приложения появляется следующая ошибка:
Log Name: Система
Source: DistributedCOM
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 APPPOOLappIISPool 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 AUTHORITYSYSTEM или IIS APPPOOLappIISPool SID — S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824).
В каждом конкретном случае идентификаторы класса, приложения, учетной записи и типа доступа может отличаться.
- Запустите редактор реестра (regedit.exe);
- Перейдите в ветку реестра, соответствующую вашему CLSID. У меня это HKEY_CLASSES_ROOTCLSID{000209FF-0000-0000-C000-000000000046};
В некоторых случаях нужно смотреть также в разделе реестра [HKEY_CLASSES_ROOTWow6432NodeCLSID. При удаленном подключении к реестру он будет находиться в разделе HKEY_LOCAL_MACHINESOFTWAREClassesAppID.
- В параметре класса должно быть указано имя. У меня это 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 ServiceTrustedInstaller или System;
- Нажмите кнопку Change и укажите имя своей учетной записи администратора. Сохраните изменения;
- Обратите внимание, что имя владельца ветки сменилось на вашу учетную запись. Поставьте галку Replace owner on subcontainers and objects (Заменить владельца подконтейнеров и объектов) и нажмите “ОК”;
- В списке разрешений добавьте вашу учетную запись администратора и предоставьте ей полный доступ (Full Permissions);
- Вы предоставили права на ветку с CLSID. Теперь нужно повторить предыдущие шаги, предоставив учетной записи администратора права на ветку с вашим идентификатором APPID из текста ошибки (например, HKEY_CLASSES_ROOTAppID{AD65A69D-3831-40D7-9629-9B0B50A93843};
- Теперь запустите консоль управления компонентами dcomcnfg с правами администратора (Control PanelAll Control Panel ItemsAdministrative ToolsComponent 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 AUTHORITYNETWORK SERVICE, необходимо дать права на локальный запуск и активацию для учетной записи NetworkService.
- Предоставьте нужные разрешения для учетной записи. Например, Local Activation -> Allow и Local Launch (Локальная активация) -> Allow;
- Перезагрузите компьютер и проверьте журналы событий. Ошибка DCOM 10016 должна исчезнуть.