Oprava chyby ID události 10016: Server DCOM nemá oprávnění místní aktivace pro PCNAME\Username SID
Nedávno se mi na mém počítači se systémem Windows 8.1 z ničeho nic začaly objevovat chyby v protokolu událostí po instalaci aktualizací v úterý opravy. Chyba se týkala Distributed COM (DCOM):
Nastavení oprávnění pro konkrétní aplikaci neudělují oprávnění místní aktivace pro aplikaci COM Server s CLSID {9E175B6D-F52A-11D8-B9A5-505054503030} a APPID {9E175B9C-F52A-11D8-B9A5-505054503030} pro uživatele PCNAME\Username SID S-1-5-21-81864976-3388411891-1937036257-1001 z adresy LocalHost (pomocí LRPC) spuštěné v kontejneru aplikace Nedostupné SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394). Toto oprávnění zabezpečení lze upravit pomocí nástroje pro správu Component Services.
Taková složitá chyba může nezkušené uživatele způsobit frustraci. Tuto terminologii neznají. Navíc odstraňování chyb DCOM je bolestné, takže jsem to zpočátku ignoroval, ale protokol událostí jich byl plný, protože se objevovaly přibližně každou hodinu. Odhodlán to napravit, rozhodl jsem se to prozkoumat.
Pro ty z vás, kteří nevědí, COM je stará objektově orientovaná meziprocesová komunikační technologie společnosti Microsoft. Server COM je spustitelný soubor (EXE nebo DLL), který implementuje sadu objektů COM. Mnoho součástí systému Windows je implementováno jako objekty COM a pro vzájemnou komunikaci se řídí standardními pravidly COM. Servery COM jsou registrovány v registru a mají ID třídy (CLSID) a APPID.
Prvním krokem k odstranění této chyby bylo zjištění, se kterou komponentou DCOM souvisí CLSID a APPID. Spusťte Editor registru a přejděte na tento klíč registru:
HKEY_CLASSES_ROOT\CLSID\{9E175B6D-F52A-11D8-B9A5-505054503030}
Tento klíč registru také odkazuje na stejné AppID jako chybová zpráva, která je {9E175B9C-F52A-11D8-B9A5-505054503030}. Takže, přejděte na další
HKCR\APPID\{9E175B9C-F52A-11D8-B9A5-505054503030}
To mi řeklo, že komponenta je WSearch (objekt Windows Search COM).
Dalším krokem bylo přiřadit tomuto CLSID/AppID správná místní aktivační oprávnění, která chtěla – mého uživatelského ID zabezpečení (SID) a SID aplikace. Systém Windows k tomu poskytuje nástroj Component Services, který umožňuje uživateli upravovat spouštěcí a aktivační oprávnění, přístupová oprávnění a konfigurační oprávnění na serverech COM.
Otevřete Nástroje pro správu -> Služby komponent. Rozbalte položku Služby komponent -> Počítač -> Tento počítač -> Konfigurace DCOM. Vyhledejte 'WSearch' a klikněte na něj pravým tlačítkem -> Vlastnosti. Přejděte na kartu „Zabezpečení“.
Když jsem to udělal, viděl jsem, že na kartě Zabezpečení pro tento objekt COM bylo vše zašedlé (zakázáno), takže jsem nejprve musel svému uživatelskému účtu udělit plná oprávnění v registru. Znovu jsem otevřel Regedit a šel ke stejnému klíči
HKEY_CLASSES_ROOT\AppID\{9E175B9C-F52A-11D8-B9A5-505054503030}
a změnil oprávnění. Nejprve musíte převzít vlastnictví (zaškrtněte 'Nahradit vlastníka v subkontejnerech a objektech') a poté přidat své uživatelské jméno a dát mu plnou kontrolu. Poté můžete změnit vlastnictví zpět na původní účet (NT Service\TrustedInstaller).
Převzít vlastnictví a udělit oprávnění správce je s Winaero velmi snadné RegOwnershipEx aplikace.
Nyní jsem znovu otevřel Component Services (Dcomcnfg.exe) a přešel na vlastnosti WSearch, kartu Zabezpečení a nyní mohl upravit oprávnění zabezpečení na oprávnění ke spuštění a aktivaci, která jsou zobrazena jako tento:
Prostřednictvím skupiny zabezpečení Všichni má můj uživatelský účet již oprávnění k místní aktivaci, ale jsou zde také zobrazeny 3 další SID, které nejsou známými uživatelskými účty nebo skupinami, jak naznačuje jejich ikona. Jsou to aplikační SID a odkazují na aplikace. Chyba protokolu událostí také uvedla „... běžící v aplikačním kontejneru Nedostupné SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394).
Zdá se, že uživatelské rozhraní pro výběr objektů Windows vám nyní neumožňuje přidávat SID aplikace pro hlavní objekty zabezpečení. Takže po kliknutí na Přidat jsem klikl na Upřesnit... a poté Najít. Tím se zobrazí seznam všech objektů. Ale většina z nich byla SID účtů. Všiml jsem si "VŠECHNY BALÍČKY APLIKACÍ", což je, jak název napovídá, pravděpodobně skupina pro všechny balíčky aplikací, tak jsem ji vybral. Kliknutím na OK všude jej přidáte a poté mu udělíte oprávnění Místní spuštění a Místní aktivace.
Nyní po klepnutí na OK a zavření uživatelského rozhraní Component Services bude chyba odstraněna z protokolu událostí, což znamená, že komponenta WSearch COM má nyní správná místní spouštěcí a aktivační oprávnění.
Tento článek jsem napsal jako obecný průvodce, který pomůže komukoli jinému podobným způsobem odstraňovat chyby DCOM v protokolu událostí. Stále mě znepokojuje, proč systém Windows ještě nemá nástroj, který by snadno obnovil správná oprávnění k objektům COM v případě, že se pokazí.