- Имя журнала system источник microsoft windows distributedcom код события 10016
- Ошибка 10016 в windows 10 и Windows Server
- Методы решения ошибки 10016
- Как исправить ошибку 10016 через назначение прав в реестре
- Как исправить ошибку 10016 через удаление ключей из ветки OLe
- Исправление ошибки 10016 через PowerShell
- Как исправить ошибку DistributedCOM 10016 в Windows 7, 8.1 и 10?
- Добавление полных разрешений приложению, вызывающего ошибку
- Удаление разделов реестра
Имя журнала system источник microsoft windows distributedcom код события 10016
Доброго времени суток, уважаемые читатели, сегодня решаем ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
Ошибка 10016 в windows 10 и Windows Server
На сервере Windows Server 2012 R2 постоянно возникает ошибка 10016.
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
и APPID
<9ca88ee3-acb7-47c8-afc4-ab702511c276>или <316cded5-e4ae-4b15-9113-7055d84dcc97>или <4839ddb7-58c2-48f5-8283-e1d1807d0d7d>
пользователю NT AUTHORITY\СИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно). Это разрешение безопасности можно изменить с помощью средства администрирования служб компонентов.
Данная ошибка выскакивает, когда какая-то из утилит не может обратиться к DCOM объекту, чаще всего, это связано с недостаточностью разрешений. Был реализован шаблон кодирования, где код сначала пытается получить доступ к компонентам DCOM с одним набором параметров. Если первая попытка не удалась, она пытается снова с другим набором параметров. Причина, по которой он не пропускает первую попытку, заключается в том, что существуют сценарии, в которых он может быть успешным. В этих сценариях это предпочтительнее. Если вы не в курсе, что такое COM объекты и DCOM, то если по простому, это концепция для создания программного обеспечения на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно. На основе COM были созданы ActiveX, DCOM, COM+, DirectX, .Net.
Методы решения ошибки 10016
Сначала нужно обновить Windows через центр обновления, и если не поможет, то делаем по очереди предложенные решения:
- Назначаем недостающие права на ветку с GUID номером <9ca88ee3-acb7-47c8-afc4-ab702511c276>или другим, зависит от вашей ситуации с кодом ошибки 10016
- Удаление некоторых ключей реестра
- Использование скрипта PowerShell
Как исправить ошибку 10016 через назначение прав в реестре
- Сразу логинимся на проблемный сервер под администратором, чтобы не вводить всякий раз имя и пароль. Запускаем Regedit.
- Запускаем поиск (CTRL+F) и ищем второй из GUIDов в описании ошибки, т.е. APPID. В данном случае это «<9ca88ee3-acb7-47c8-afc4-ab702511c276>».
- Первый результат поиска должен быть в ключе HKEY_CLASSES_ROOT\AppID\. Наступаем на найденный GUID в левой панели и щелкаем правой кнопкой, выбираем Разрешения, а затем кнопку Дополнительно.
- В верхней части дополнительных параметров указан текущий владелец TrustedInstaller. Нажимаем рядом с ним ссылку Изменить.
- Нам нужно сделать владельцем локальную группу Администраторы. Затем кнопки Дополнительно, Поиск и выбираем в результатах поиска Администраторы.
- Ставим флажок «Заменить владельца подконтейнеров и объектов», кнопка ОК.
- После смены владельца мы можем изменять разрешения. В окне Разрешения на вкладке Безопасность даем для СИСТЕМА и Администраторы разрешение на полный доступ. ОК.
- Далее смотрим для нашего ключа HKEY_CLASSES_ROOT\AppID\ <9ca88ee3-acb7-47c8-afc4-ab702511c276>значение параметра «(По умолчанию)» = «RuntimeBroker«.
8. В диспетчере серверов в правом верхнем углу меню Средства -> Службы компонентов. Открываем Компьютеры –> Мой компьютер –> Настройка DCOM. Правый клик по строке из п.7 RuntimeBroker, Свойства.
9. На вкладке Безопасность. В разделе Разрешения на запуск и активацию кнопка Изменить. Для группы СИСТЕМА разрешаем Локальный запуск и Локальная активация. ОК. Если вам runtimebroker не дает отредактировать настройки, то вам нужно дать права на него в реестре Windows
щелкаем по нему правым кликом и выбираем свойства.
Даем права для группы администраторы (Полный доступ)
Если не даст вам поставить, то вам нужно заменить владельца Trustinstaller на себя или группу администраторы. Как только дали права, идем опять в компоненты DCOM и выставляем права, как описывал выше.
10. Перезагружаем сервер, проверяем логи, по сути ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
Как исправить ошибку 10016 через удаление ключей из ветки OLe
Данный метод подразумевает удаление нескольких ключей реестра, которые отвечают за проверку прав на COM объекты. Нас будет интересовать ветка реестра:
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. По умолчанию администраторы могут получать разрешения на локальный и удаленный запуск и активацию, а члены группы «Все» могут получать разрешения на локальную активацию и запуск.
теперь находим все эти ключи, щелкаем по ним правым кликом мыши и удаляем со спокойной душей, далее я вам советую перезагрузить вашу систему. В подавляющем количестве случаев ошибка с кодом 10016 у вас больше не появится.
Исправление ошибки 10016 через PowerShell
Если вам не удалось изменить запуск службы для системы, то можно все поправить и избавиться от сообщений «APPID
<9ca88ee3-acb7-47c8-afc4-ab702511c276>
пользователю NT AUTHORITY\СИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно)» с помощью скрипта PowerShell. Открываем ссылку с Microsoft
Скачиваем тут сценарий DCOMPermissions.psm1
Кладем данный модуль в нужную вам папку. Далее вы открываете консоль PowerShell и переходите в месторасположение данного модуля, после чего его нужно импортировать:
Grant-DCOMPermission -ApplicationID «<9ca88ee3-acb7-47c8-afc4-ab702511c276>» -Account «SYSTEM» -Type Launch -Permissions LocalLaunch,LocalActivation -OverrideConfigurationPermissions
Если ошибок не вышло, то значит все успешно применено, перезагрузка не потребуется.
Далее вы можете посмотреть примененные разрешения:
Вы увидите права у системы, у нее будет SID S-1-5-10.
Как исправить ошибку DistributedCOM 10016 в Windows 7, 8.1 и 10?
Возникновение ошибки 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.