Исправление ошибки идентификатора события 10016: сервер DCOM не имеет разрешений на локальную активацию для PCNAME \ Username SID
Недавно на моем ПК с Windows 8.1, из ниоткуда, я начал получать ошибки в журнале событий после установки обновлений во вторник исправлений. Ошибка была связана с распределенным COM (DCOM):
Параметры разрешений для конкретного приложения не предоставляют разрешение на локальную активацию для приложения COM-сервера с CLSID. {9E175B6D-F52A-11D8-B9A5-505054503030} и APPID {9E175B9C-F52A-11D8-B9A5-505054503030} пользователю PCNAME \ Username SID S-1-5-21-81864976-3388411891-1937036257-1001 с адреса LocalHost (с использованием LRPC), запущенного в контейнере приложения. Недоступный SID. (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.
Такая сложная ошибка может вызвать разочарование у неопытных пользователей. Они не знакомы с этой терминологией. Кроме того, устранение ошибок DCOM - это боль, поэтому я сначала проигнорировал это, но журнал событий был полон ими, поскольку это происходило каждый час или около того. Решив исправить это, я решил разобраться.
Для тех из вас, кто не знает, COM - это старая объектно-ориентированная технология межпроцессного взаимодействия Microsoft. COM-сервер - это исполняемый файл (EXE или DLL), который реализует набор COM-объектов. Многие компоненты Windows реализованы как объекты COM и следуют стандартным правилам COM для взаимодействия друг с другом. COM-серверы зарегистрированы в реестре и имеют идентификатор класса (CLSID) и APPID.
Первым шагом к устранению этой ошибки было выяснение, к какому компоненту DCOM относятся CLSID и APPID. Итак, запустите редактор реестра и перейдите к этому ключу реестра:
HKEY_CLASSES_ROOT \ CLSID \ {9E175B6D-F52A-11D8-B9A5-505054503030}
Этот ключ реестра также указывает на тот же идентификатор приложения, что и сообщение об ошибке: {9E175B9C-F52A-11D8-B9A5-505054503030}. Итак, следующий переход к
HKCR \ APPID \ {9E175B9C-F52A-11D8-B9A5-505054503030}
Это говорит мне, что это компонент WSearch (COM-объект Windows Search).
Следующим шагом было назначить этому CLSID / AppID правильные разрешения на локальную активацию, которые он хотел, - моего идентификатора безопасности пользователя (SID) и SID приложения. Для этого в Windows имеется инструмент «Службы компонентов», который позволяет пользователю изменять разрешения на запуск и активацию, права доступа и разрешения конфигурации на COM-серверах.
Откройте «Администрирование» -> «Службы компонентов». Разверните Службы компонентов -> Компьютер -> Мой компьютер -> Конфигурация DCOM. Найдите WSearch и щелкните его правой кнопкой мыши -> Свойства. Перейдите во вкладку «Безопасность».
Сделав это, я увидел, что все было выделено серым цветом (отключено) на вкладке «Безопасность» для этого COM-объекта, поэтому мне сначала нужно было предоставить моей учетной записи полные разрешения в реестре. Я снова открыл Regedit и перешел к тому же ключу
HKEY_CLASSES_ROOT \ AppID \ {9E175B9C-F52A-11D8-B9A5-505054503030}
и изменил разрешения. Сначала вы должны стать владельцем (установите флажок «Заменить владельца подконтейнеров и объектов»), а затем добавьте свое имя пользователя и предоставьте ему полный доступ. После этого вы можете сменить владельца на исходную учетную запись (NT Service \ TrustedInstaller).
Взять на себя ответственность и предоставить права администратора очень просто с Winaero's RegOwnershipEx приложение.
Теперь я повторно открыл службы компонентов (Dcomcnfg.exe) и перешел в свойства WSearch, вкладку Безопасность и теперь можно было редактировать разрешения безопасности для разрешений на запуск и активацию, которые отображаются как это:
Через группу безопасности «Все» моя учетная запись пользователя уже имеет разрешения на локальную активацию, но также показаны 3 других идентификатора безопасности, которые, как показывает их значок, не являются известными учетными записями пользователей или группами. Это идентификаторы безопасности приложений и относятся к приложениям. В ошибке журнала событий также говорится: "... запущенный в контейнере приложения Недоступный SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394).
Теперь пользовательский интерфейс средства выбора объектов Windows, похоже, не позволяет добавлять SID приложений для объектов участников безопасности. Итак, после нажатия кнопки "Добавить" я щелкнул "Дополнительно"... а затем «Найти сейчас». Это перечислит все объекты. Но большинство из них были SID аккаунтов. Я заметил «ВСЕ ПАКЕТЫ ПРИЛОЖЕНИЙ», которые, как следует из названия, вероятно, представляют собой группу для всех пакетов приложений, поэтому я выбрал ее. Нажмите везде ОК, чтобы добавить его, а затем дайте ему разрешения на локальный запуск и локальную активацию.
Теперь, после нажатия кнопки ОК и закрытия пользовательского интерфейса служб компонентов, ошибка исчезла из журнала событий, что означает, что COM-компонент WSearch теперь имеет правильные разрешения на локальный запуск и активацию.
Я написал эту статью как общее руководство, чтобы помочь другим аналогичным образом устранять ошибки DCOM в журнале событий. Меня все еще беспокоит, почему в Windows до сих пор нет инструмента для простого восстановления правильных разрешений для COM-объектов в случае их сбоя.