Параметры разрешений для конкретного приложения не дают разрешения Локальный Запуск для приложения COM-сервера с CLSID
Описание : Параметры разрешений для конкретного приложения не дают разрешения Локальный Запуск для приложения COM-сервера с CLSID и APPID пользователю NT AUTHORITY\система с SID (S-1-5-18) и адресом LocalHost (с использованием LRPC). Это разрешение безопасности можно изменить с помощью служебной программы управления службами компонентов.
- Убедитесь, что выполнили вход под Администратором (иначе всё придется запускать от его имени) .
- Нажмите Пуск , в строке поиска введите regedit , кликните regedit.exe
- В редакторе реестра нажмите CTRL-F , введите и кликните » Найти далее ”.
- Первый результат расположен в ключ HKEY_CLASSES_ROOT\AppID\ . Это ключ, который нам нужен .
- Кликните правой кнопкой ключ в левой панели и затем нажмите » Разрешения … ”
- В первую очередь мы должны изменить владельца ключа . Текущий владелец TrustedInstaller . Мы должны изменить владельца на группу Администраторы . Для этого кликните Дополнительно . Затем переключитесь на закладку Владелец , выберите Администраторы , отметьте » Заменить владельца подконтейнеров и объектов ” и нажмите OK .
- Сейчас мы изменили владельца на Администратора ( члена группы Администраторы ), и теперь можем изменять разрешения ключа . В окне Разрешения , даем Администраторам и системе полный доступ .
Затем нажимаем ОК для сохранения изменений . В этих 8 шагах , мы дали Администраторам и системе полный доступ к ключу HKEY_CLASSES_ROOT\AppID\ - Проверьте, что в этом ключе значение LocalService равно IPBusEnum .
- Откройте диалог «Выполнить» и введите dcomcnfg. (или нажмите Пуск , в строке поиска введите Компонент и кликните Службы компонентов)
- В окне Службы компонентов выберите Компьютеры –> Мой компьютер –> Настройка DCOM . Правой кнопкой кликните IPBusEnum и затем Свойства .
- Переключитесь на закладку Безопасность . В секции Разрешения на запуск и активацию выберите Изменить .
- Выберите Система , выберите разрешение » Локальный запуск ”. Нажмите OK .
- Готово !
Ошибка 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID и APPID в Windows server 2012 R2
Доброго времени суток, уважаемые читатели, сегодня решаем ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID и APPID в Windows server 2012 R2.
Ошибка 10016 в windows 10 и Windows Server
На сервере Windows Server 2012 R2 постоянно возникает ошибка 10016.
Имя журнала: Система
Источник: DistributedCOM
Код: 10016
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
и APPID
или или
пользователю 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
and APPID
to the user NT AUTHORITY\LOCAL 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.
Подробнее вы можете почитать в вики https://ru.wikipedia.org/wiki/Component_Object_Model
Методы решения ошибки 10016
Сначала нужно обновить Windows через центр обновления, и если не поможет, то делаем по очереди предложенные решения:
- Назначаем недостающие права на ветку с GUID номером или другим, зависит от вашей ситуации с кодом ошибки 10016
- Удаление некоторых ключей реестра
- Использование скрипта PowerShell
Как исправить ошибку 10016 через назначение прав в реестре
- Сразу логинимся на проблемный сервер под администратором, чтобы не вводить всякий раз имя и пароль. Запускаем Regedit.
- Запускаем поиск (CTRL+F) и ищем второй из GUIDов в описании ошибки, т.е. APPID. В данном случае это «».
- Первый результат поиска должен быть в ключе HKEY_CLASSES_ROOT\AppID\. Наступаем на найденный GUID в левой панели и щелкаем правой кнопкой, выбираем Разрешения, а затем кнопку Дополнительно.
- В верхней части дополнительных параметров указан текущий владелец TrustedInstaller. Нажимаем рядом с ним ссылку Изменить.
- Нам нужно сделать владельцем локальную группу Администраторы. Затем кнопки Дополнительно, Поиск и выбираем в результатах поиска Администраторы.
- Ставим флажок «Заменить владельца подконтейнеров и объектов», кнопка ОК.
- После смены владельца мы можем изменять разрешения. В окне Разрешения на вкладке Безопасность даем для СИСТЕМА и Администраторы разрешение на полный доступ. ОК.
- Далее смотрим для нашего ключа HKEY_CLASSES_ROOT\AppID\ значение параметра «(По умолчанию)» = «RuntimeBroker«.
8. В диспетчере серверов в правом верхнем углу меню Средства -> Службы компонентов. Открываем Компьютеры –> Мой компьютер –> Настройка DCOM. Правый клик по строке из п.7 RuntimeBroker, Свойства.
9. На вкладке Безопасность. В разделе Разрешения на запуск и активацию кнопка Изменить. Для группы СИСТЕМА разрешаем Локальный запуск и Локальная активация. ОК. Если вам runtimebroker не дает отредактировать настройки, то вам нужно дать права на него в реестре Windows
HKEY_CLASSES_ROOT\AppID\RuntimeBroker.exe
щелкаем по нему правым кликом и выбираем свойства.
Даем права для группы администраторы (Полный доступ)
Если не даст вам поставить, то вам нужно заменить владельца Trustinstaller на себя или группу администраторы. Как только дали права, идем опять в компоненты DCOM и выставляем права, как описывал выше.
10. Перезагружаем сервер, проверяем логи, по сути ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID и APPID вы не должны больше увидеть.
В Windows 10 Anniversary Updat данная ошибка 10016 решается аналогично, так, что глюк тянется уже лет 5
Как исправить ошибку 10016 через удаление ключей из ветки OLe
Данный метод подразумевает удаление нескольких ключей реестра, которые отвечают за проверку прав на COM объекты. Нас будет интересовать ветка реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole
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
пользователю NT AUTHORITY\СИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно)» с помощью скрипта PowerShell. Открываем ссылку с Microsoft
https://gallery.technet.microsoft.com/Grant-Revoke-Get-DCOM-22da5b96
Скачать скрипт DCOMPermissions.psm1
Скачиваем тут сценарий DCOMPermissions.psm1
Кладем данный модуль в нужную вам папку. Далее вы открываете консоль PowerShell и переходите в месторасположение данного модуля, после чего его нужно импортировать:
Import-Module .\DCOMPermissions.psm1
Grant-DCOMPermission -ApplicationID «» -Account «SYSTEM» -Type Launch -Permissions LocalLaunch,LocalActivation -OverrideConfigurationPermissions
Если ошибок не вышло, то значит все успешно применено, перезагрузка не потребуется.
Далее вы можете посмотреть примененные разрешения:
Get — DCOMPermission — ApplicationID «<9CA88EE3-ACB7-47C8-AFC4-AB702511C276>» — Type Launch9CA88EE3-ACB7-47C8-AFC4-AB702511C276>
На этом у меня все, мы успешно устранили ошибку DCOM 10016. Я должен подчеркнуть, что ошибка DCOM 10016 вряд ли повлияет на производительность вашей системы. В очень старые времена, когда Microsoft впервые представила «Distributed» в компонентной объектной модели, были уязвимости. Однако эти уязвимости были исправлены, и DCOM теперь безопасен. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Популярные Похожие записи:
- Не открывается пуск в Windows 10, 100% решение
- Ошибка DCOM ID 10036, решаем за минуту
- Как дать права на Deleted Objects в Active Directory
- Ошибка ssh Windows id_rsa bad permissions
- Приложению Excel не удалось вставить данные, 100% решение
- Решено: Windows cannot access the specified device
Авг 19, 2021 11:43 Автор — Сёмин Иван
49 Responses to Ошибка 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID и APPID в Windows server 2012 R2
КАК ИСПРАВИТЬ ОШИПКУ Параметры разрешений по умолчанию для компьютера не дают разрешения Локально Активация для приложения COM-сервера с CLSID
Windows ошибка Event ID 10016 — DistributedCOM
На сервере в логах постоянно проскакивает ошибка Event ID 10016. Пример текста ошибки:
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
and APPID
to the user 1C\Administrator SID (S-1-5-21-943282006-2197489507-2874824746-500) 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.
Разберёмся, что, собственно, произошло.
Некий пользователь по имени 1C\Administrator (1C — это имя компьютера, пользователь — локальный администратор компьютера) с идентификатором SID (S-1-5-21-943282006-2197489507-2874824746-500), будучи в здравом уме и твёрдой памяти, находясь на локальной машине (LocalHost — этот сервер), с помощью LRPC (Lightweight Remote Procedure Call — это оптимизированный способ локального запуска удалённых процедур) запустил какое-то приложение с идентификатором APPID в каком-то контейнере приложений с неизвестным SID.
Это приложение с идентификатором APPID полезло в службу COM Server с идентификатором CLSID и обратилось к DCOM объекту с какой-то командой, которое требует права Local Activation. А таких прав у приложения (или пользователя, или системы) нет.
Скорее всего приложение обратится с повторным запросом к DCOM объекту уже с другим набором параметров, не требующих прав Local Activation, и запрос пройдёт успешно. Но ошибка в логах от первого запроса всё равно останется. Такое поведение говорит о не совсем корректной реализации данной функции приложения, ты сначала проверяй какие права у тебя есть, а потом запрос делай.
Возможно также, что приложение было некорректно установлено, или пользователь, от имени которого раньше запускалось приложение, был удалён.
Или просто сбой в матрице и слетели права доступа.
Что можно сделать с Event ID 10016?
Установить последние обновления Windows. Не помешает.
Переустановить приложение, которое вызывает ошибку. Если вы, конечно, знаете, что это за приложение.
Дать права Local Activation приложению, которое пытается лезет в службу COM Server с идентификатором CLSID .
Назначение прав доступа
Чтобы назначить права доступа, нужно иметь права. назначать права. Дадим себе права изменять права доступа нужным приложениям.
Работаем под локальным администратором. Запускаем реестр.
regedit
Переходим в ветку реестра
\HKEY_CLASSES_ROOT\CLSID
И находим там ветку реестра с идентификатором CLSID .
Кликаем правой кнопкой на ветку реестра, выбираем Permissions (Разрешения).
И я уже вижу косяк. В списках пользователей есть неизвестный аккаунт Account Unknown. Скорее всего раньше приложение работало от его имени. Но нам сейчас это уже не принципиально.
Нажимаем кнопку Advanced (Дополнительно).
Владелец ветки реестра TrustedInstaller. Меняем его на себя (локального администратора). Нажимаем Change (Изменить) и в списке пользователей указываем себя или группу локальных администраторов. Я указываю себя.
Ставим галку Replace owner on subcontainers and objects (Заменить владельца подконтейнеров и объектов), чтобы права применились ко всем объектам ветки реестра. OK.
В списке пользователей группе локальных администраторов и пользователю SYSTEM (СИСТЕМА) даём полные права Full Control. OK.
Переходим в ветку реестра
\HKEY_CLASSES_ROOT\AppID
И находим там ветку реестра с идентификатором APPID .
Запоминаем имя приложения, оно написано в параметре Default (По умолчанию):
Повторяем все те же действия, меняем владельца объекта с TrustedInstaller на себя или группу локальных администраторов. В списке пользователей группе локальных администраторов и пользователю SYSTEM (СИСТЕМА) даём полные права Full Control.
Теперь нужно дать права Local Activation приложению.
Запускаем оснастку Component Services (Службы компонентов) от имени администратора.
mmc comexp.msc
Переходим в Component Services → Computers → My Computer → DCOM Config (Службы компонентов → Компьютеры → Мой компьютер → Настройка DCOM.
Находим в списке приложение с определённым нами именем RuntimeBroker и Application ID .
Если приложение не находится, то оно может быть 32-битным, его нужно искать в оснастке:
mmc comexp.msc /32
Кликаем правой кнопкой на приложение, Properties (Свойства).
Вкладка Security (Безопасность), блок Launch and Activation Permissions (Разрешения на запуск и активацию), Edit (Изменить).
У меня отображается ошибка. Некоторые разрешения не распознались. Косяк, удаляем их — Remove.
Опять видим косяк с неизвестным пользователем. Выбираем пользователя SYSTEM (СИСТЕМА) и даём права:
- Local Launch (Локальный запуск)
- Local Activation (Локальная активация)
Перезагружаем сервер, проверяем лог, ошибка 10016 для CLSID и APPID не должна повториться.
Ошибка DistributedCOM 10016 в Windows: Параметры разрешений для приложения не дают разрешения локальной активации
11.02.2019
itpro
Windows 10, Windows 7, Windows Server 2012 R2
комментариев 19
В этой заметке я покажу, как исправить ошибку 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 и APPID пользователю 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
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. В моем случае это
(в некоторых случаях идентификатор приложения может быть не указан — 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\;
В некоторых случаях нужно смотреть также в разделе реестра [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\. При удаленном подключении к реестру он будет находиться в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID.
Если вы не можете найти свой компонент в списке, вероятно у вас 64 битная версия Windows, а запускаемый компонент является 32 битным. В этом случае нужно запустить консоль DCOM командой: mmc comexp.msc /32
Перейдите на вкладку Security. Все элементы управления должны быть доступными для изменения;
Если открыть консоль dcomcnfg до изменения разрешений на ветку реестра, все настройки на вкладке Security окажутся заблокированы (недоступны для изменения), несмотря на то, что вы запустили консоль от имени администратора.
Совет. Если в начальном логе ошибки вместо NT AUTHORITY\система была указана NT AUTHORITY\NETWORK SERVICE, необходимо дать права на локальный запуск и активацию для учетной записи NetworkService.
Предыдущая статья Следующая статья