Устранение ошибки 10016 - DistributedCOM

Материал из TekonWiki
Перейти к: навигация, поиск
Внимание!
Выполнение предлагаемых ниже команд предполагает понимание смысла операций.
Если номер ошибки и её описание не соответствуют изложенному ниже - не применяйте данные команды.
Действия, указанные в статье, необходимо выполнять из-под учётной записи с правами Администратора. 

Описание проблемы:

В системе Windows10, установленной пользователем, SCADA не отображает данные с удалённого OPC-сервера. Происходит подключение, отображаются тэги, но примитивы с синим "!".

Внимание! Это может быть вызвано некорректными настройками DCOM в операционной системе. Пожалуйста, проверьте настройки DCOM для Windows10 в соответствии со статьёй Настройки DCOM для ОС Windows 10

Возможная причина:

Система Windows CDP Activity store пыталась выполнить действие с сервером Microsoft Windows DistributedCOM, однако настройки разрешения не были предоставлены с помощью локальной активации и служба DCOM перестаёт работать.

Признаки:

В журнале событий СИСТЕМЫ в момент попытки подключения к OPC-серверу появляются ошибки с идентификатором события 10016 - DistributedCOM с описанием

  1. Источника: Источник ошибки Microsoft Windows DistributedCOM
  2. Пользователя:SYSTEM пытался использовать DistributedCOM при возникновении ошибки
  3. Описание: Это говорит вам об ошибке и дает некоторые подсказки.
The application-specific permission settings do not grant Local Activation permission for the COM Server application with 
CLSID {8D8F4F83-3594-4F07-8369-FC3C3CAE4919} and APPID {F72671A9-012C-4725-9D2F-2A4D32D65169}
to the user NT AUTHORITY\SYSTEM SID (S-1-5-18) 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.
 Внимание! В каждом конкретном случае CLSID и APPID могут отличаться от приведённых в статье. В командах ниже необходимо использовать те значения CLSID и APPID, которые указаны в вашей ошибке.   

Устранение ошибки

Код ошибки содержит два значения CLSID и APPID, которые необходимо найти с помощью программы Редактор реестра (regedit) в реестре

HKEY_CLASSES_ROOT\CLSID\{8D8F4F83-3594-4F07-8369-FC3C3CAE4919}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{F72671A9-012C-4725-9D2F-2A4D32D65169}

 Внимание! В каждом конкретном случае пути в реестре CLSID и APPID могут отличаться от приведённых в статье. Используйте актуальные пути   

Скачайте утилиту SetACL по ссылке https://helgeklein.com/downloads/SetACL/current/SetACL (executable version).zip и разархивируйте нужную версию (х32 или x64) в папку c:\windows\system32\

Запустите командную строку от имени администратор и выполните последовательно следующие команды:

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{8D8F4F83-3594-4F07-8369-FC3C3CAE4919}" -ot reg -actn setowner -ownr "n:Administrators"
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{8D8F4F83-3594-4F07-8369-FC3C3CAE4919}" -ot reg -actn ace -ace "n:Administrators;p:full"
SetACL.exe -on "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{F72671A9-012C-4725-9D2F-2A4D32D65169}" -ot reg -actn setowner -ownr "n:Administrators"
SetACL.exe -on "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{F72671A9-012C-4725-9D2F-2A4D32D65169}" -ot reg -actn ace -ace "n:Administrators;p:full"

После ввода каждой команды должно появляться сообщение

SetACL finished successfully.

Перейдите в оснастку Службы компонентов в разделе Панель управления -> Администрирование и откройте ветку Настройки DCOM. Выберите в настройках Вид - Подробно и найдите в конце списка компонент с APPID указанным в ошибке. В данном случае это {F72671A9-012C-4725-9D2F-2A4D32D65169}. Откройте его Свойства, раздел Разрешения на запуск и активацию. Выберите пункт Настроить и добавьте пользователя СИСТЕМА (SYSTEM). Установите его права на локальную активацию.

Выполните команду

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{8D8F4F83-3594-4F07-8369-FC3C3CAE4919}" -ot reg -actn setowner -ownr "n:SYSTEM"
SetACL.exe -on "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{F72671A9-012C-4725-9D2F-2A4D32D65169}" -ot reg -actn setowner -ownr "n:NT SERVICE\TrustedInstaller"

Перезагрузите систему.

Вышеописанный способ позволяет устранить ошибку DCOM только для подсистемы CDP Activity store, однако принципы, указанные в статье, позволят устранить такую же ошибку DCOM для других подсистем с другими CLSID и APPID.