Параметры разрешений для конкретного приложения не дают разрешения Локальный Запуск для приложения COM-сервера с CLSID…
Оставляю тут небольшую заметку (в первую очередь для себя) по решению проблемы c ошибкой DCOM 10016. Эта проблема довольно часто встречается как в клиентских, так и в серверных версиях Windows, начиная еще со времен Windows XP.
Проблема проявляется следующим образом: в журнале событий системы при загрузке компьютера или попытке запуска/установки приложения появляется следующая ошибка:
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 описание ошибки такое:
Судя по описанию ошибки: система (NT AUTHORITY\система) пытается запустить некий компонент COM с помощью инфраструктуры DCOM и не может этого сделать из-за отсутствия права «Локальный Запуск». В коде ошибки содержатся только коды классов COM компонента и приложения. Попробуем определить, какому именно приложению принадлежит идентификатор и предоставить системе права, необходимые для его запуска.
Соответствие между именем компонента и его кодом можно установить через реестр. Эта информация хранится в ветке HKEY_CLASSES_ROOT\AppID\.
- Запускаем редактор реестра (локально или удаленно через Remote Registry) под администратором компьютера и выполняем поиск (CTRL-F) по идентификатору APPID из описания ошибки. В нашем случае это {AD65A69D-3831-40D7-9629-9B0B50A93843}.
- Искомый ключ должен быть найден в разделе HKEY_CLASSES_ROOT\AppID\ (при удаленном подключении к реестру он будет находиться в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID ).
- В первую очередь нам понадобится изменить владельца этой ветки реестра. Щелкаем по найденной ветке ПКМ и отрываем окно разрешений (Permissions), а затем кнопку Advanced (Дополнительно) ->Owner (Владелец).
- В верхней части окна указан текущий владелец TrustedInstaller.
- В списке возможных владельцев выбираем Администраторы и ставим галку Replace owner on subcontainers and objects (Заменить владельца подконтейнеров и объектов) и жмем “ОК” .
- Теперь, когда владельцем ключа стала группа локальных администраторов, еще раз открываем окно настроек безопасности и предоставляем группе Администраторы и System полный доступ (Full Control).
- Далее запоминаем значение параметра (Default) нашего ключа {AD65A69D-3831-40D7-9629-9B0B50A93843} . В нашем примере это SMS Agent Host (агент SCCM).
- Далее открываем консоль управления службами компонентов Start –> Administrative Tools –> Component Services (comexp.msc или dcomcnfg). Разворачиваем Computers –> My Computer–> DCOM Config (Настройка DCOM) и находим в списке SMS Agent Host.
- В контекстном меню открываем свойства этого элемента. На вкладке Безопасность в разделе Разрешения на запуск и активацию нажимаем кнопку Изменить. Выбираем Система и разрешаем Локальный запуск (Local Launch) и Локальную активацию (Local Activation). Сохраняем изменения, нажав ОК. Совет. Если в начальном логе ошибки вместо NT AUTHORITY\система была указана NT AUTHORITY\NETWORK SERVICE, необходимо дать права на локальный запуск и активацию для учетной записи NetworkService.
- Перезагружаем компьютер и проверяем логи.