Įvykio ID klaidos 10016 pataisymas: DCOM serveris neturi vietinio aktyvinimo leidimų, skirtų PCNAME\Vartotojo vardo SID
Neseniai „Windows 8.1“ kompiuteryje iš niekur pradėjau gauti klaidų įvykių žurnale, kai įdiegiau naujinimus pataisų antradienį. Klaida buvo susijusi su paskirstytu COM (DCOM):
Konkrečios programos leidimo parametrai nesuteikia vietinio aktyvinimo leidimo COM serverio programai su CLSID {9E175B6D-F52A-11D8-B9A5-505054503030} ir APPID {9E175B9C-F52A-11D8-B9A5-505054503030 vartotojui PCNAME\Username SID S-1-5-21-81864976-3388411891-1937036257-1001 iš adreso LocalHost (naudojant LRPC), veikiantis programų konteineryje Nepasiekiamas SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394). Šį saugos leidimą galima pakeisti naudojant komponentų paslaugų administravimo įrankį.
Dėl tokios sudėtingos klaidos nepatyrę vartotojai gali nusivilti. Jie nėra susipažinę su šia terminija. Be to, DCOM klaidų šalinimas yra sunkus, todėl iš pradžių į tai nekreipiau dėmesio, bet įvykių žurnale jų buvo pilna, nes tai įvykdavo kas valandą. Nusprendęs tai ištaisyti, nusprendžiau ištirti.
Tiems iš jūsų, kurie nežino, COM yra sena į objektus orientuota „Microsoft“ procesų komunikacijos technologija. COM serveris yra vykdomasis failas (EXE arba DLL), kuris įgyvendina COM objektų rinkinį. Daugelis „Windows“ komponentų yra įdiegti kaip COM objektai ir laikosi standartinių COM taisyklių, kad galėtų bendrauti vienas su kitu. COM serveriai yra užregistruoti registre ir turi klasės ID (CLSID) ir APPID.
Pirmasis šios klaidos šalinimo veiksmas buvo išsiaiškinti, su kuriuo DCOM komponentu susiję CLSID ir APPID. Taigi paleiskite registro rengyklę ir eikite į šį registro raktą:
HKEY_CLASSES_ROOT\CLSID\{9E175B6D-F52A-11D8-B9A5-505054503030}
Šis registro raktas taip pat nurodo tą patį AppID kaip ir klaidos pranešimas, kuris yra {9E175B9C-F52A-11D8-B9A5-505054503030}. Taigi, eikite toliau
HKCR\APPID\{9E175B9C-F52A-11D8-B9A5-505054503030}
Tai man pasakė, kad komponentas buvo WSearch (Windows Search COM objektas).
Kitas veiksmas buvo priskirti šiam CLSID / Programos ID teisingus vietinius aktyvinimo leidimus, kurių jis norėjo – mano vartotojo saugos ID (SID) ir programos SID. Norėdami tai padaryti, „Windows“ teikia komponentų paslaugų įrankį, leidžiantį vartotojui keisti paleidimo ir aktyvinimo leidimus, prieigos leidimus ir konfigūracijos leidimus COM serveriuose.
Atidarykite Administravimo įrankiai -> Komponentų paslaugos. Išskleiskite Komponentų paslaugos -> Kompiuteris -> Mano kompiuteris -> DCOM konfig. Raskite „WSearch“ ir dešiniuoju pelės mygtuku spustelėkite jį -> Ypatybės. Eikite į skirtuką „Sauga“.
Tai padaręs pamačiau, kad šio COM objekto Sauga skirtuke viskas buvo pilka (išjungta), todėl pirmiausia turėjau suteikti savo vartotojo abonementui visus registro leidimus. Vėl atidariau Regedit ir nuėjau prie to paties rakto
HKEY_CLASSES_ROOT\AppID\{9E175B9C-F52A-11D8-B9A5-505054503030}
ir pakeitė leidimus. Pirmiausia turite perimti nuosavybės teisę (pažymėkite „Pakeisti subkonteinerių ir objektų savininką“), tada pridėti savo vartotojo vardą ir suteikti jam visišką valdymą. Po to galėsite grąžinti nuosavybės teisę į pradinę paskyrą (NT Service\TrustedInstaller).
„Winaero's“ labai lengva perimti nuosavybę ir suteikti administratoriaus leidimus RegOwnershipEx programėlė.
Dabar iš naujo atidariau komponentų paslaugas (Dcomcnfg.exe) ir nuėjau į WSearch ypatybes, skirtuką Sauga ir dabar galėjo redaguoti saugos leidimus paleidimo ir aktyvinimo leidimuose, kurie rodomi kaip tai:
Per saugos grupę „Visi“ mano vartotojo paskyra jau turi vietinio aktyvinimo leidimus, tačiau taip pat rodomi 3 kiti SID, kurie nėra žinomos vartotojų paskyros ar grupės, kaip nurodo jų piktograma. Jie yra programos SID ir nurodo programas. Įvykių žurnalo klaida taip pat pasakė „... veikia programos konteineryje Nepasiekiamas SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394).
Dabar atrodo, kad „Windows“ objektų rinkiklio vartotojo sąsaja neleidžia pridėti pagrindinių saugos objektų taikomųjų programų SID. Taigi paspaudęs Pridėti, paspaudžiau Išplėstinė... ir tada Rasti dabar. Bus išvardyti visi objektai. Tačiau dauguma jų buvo paskyros SID. Pastebėjau "ALL APPLICATION PACKAGES", kuris, kaip rodo pavadinimas, tikriausiai yra visų programų paketų grupė, todėl pasirinkau ją. Visur spustelėkite Gerai, kad jį pridėtumėte, tada suteikite vietinio paleidimo ir vietinio aktyvinimo leidimus.
Dabar spustelėjus Gerai ir uždarius komponentų paslaugų vartotojo sąsają, klaida dingsta iš įvykių žurnalo, o tai reiškia, kad WSearch COM komponentas dabar turi teisingus vietinius paleidimo ir aktyvinimo leidimus.
Šį straipsnį parašiau kaip bendrą vadovą, kad padėčiau kitiems panašiai pašalinti DCOM klaidas įvykių žurnale. Man vis dar neramu, kodėl „Windows“ dar neturi įrankio, leidžiančio lengvai atkurti teisingus COM objektų leidimus, jei jie susipainiotų.