Виправлено помилку ідентифікатора події 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}
Цей ключ реєстру також вказує на той самий AppID, що й повідомлення про помилку: {9E175B9C-F52A-11D8-B9A5-505054503030}. Отже, далі переходьте до
HKCR\APPID\{9E175B9C-F52A-11D8-B9A5-505054503030}
Це підказало мені, що компонентом був WSearch (об’єкт COM пошуку Windows).
Наступним кроком було призначити цьому CLSID/AppID правильні дозволи на локальну активацію, які він хотів, — мого ідентифікатора безпеки користувача (SID) та SID програми. Для цього Windows надає інструмент Component Services, який дозволяє користувачеві змінювати дозволи на запуск та активацію, дозволи доступу та дозволи на конфігурацію на 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, які не є відомими обліковими записами або групами користувачів, як вказує їх значок. Вони є ідентифікаторами додатків і відносяться до програм. Помилка журналу подій також сказала "... працює в контейнері програми. Недоступний SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394).
Тепер інтерфейс користувача для вибору об’єктів Windows, здається, не дозволяє додавати ідентифікатори SID додатків для основних об’єктів безпеки. Тому, натиснувши Додати, я натиснув Додатково... а потім Знайти зараз. Це покаже список усіх об’єктів. Але більшість із них були обліковими записами SID. Я помітив "ВСІ ПАКЕТИ ПРОГРАММ", який, як випливає з назви, ймовірно, є групою для всіх пакетів програм, тому я вибрав його. Натисніть OK скрізь, щоб додати його, а потім надайте йому дозволи на локальний запуск і локальну активацію.
Тепер, натиснувши кнопку «ОК» та закриття інтерфейсу служби компонентів, помилка зникла з журналу подій, що означає, що компонент WSearch COM тепер має правильні локальні дозволи на запуск та активацію.
Я написав цю статтю як загальний посібник, щоб допомогти іншим усунути помилки DCOM у своєму журналі подій подібним чином. Мене все ще хвилює, чому Windows ще не має інструменту для легкого відновлення правильних дозволів до об’єктів COM, якщо вони зіпсуються.