მოვლენის ID შეცდომის 10016 გამოსწორება: DCOM სერვერს არ აქვს ლოკალური აქტივაციის ნებართვები PCNAME\Username SID-ისთვის
ახლახან, ჩემს Windows 8.1 კომპიუტერზე, არსაიდან დავიწყე შეცდომების მიღება Event Log-ში, Patch Tuesday-ზე განახლებების დაყენების შემდეგ. შეცდომა დაკავშირებული იყო განაწილებულ 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). ეს უსაფრთხოების ნებართვა შეიძლება შეიცვალოს Component Services ადმინისტრაციული ხელსაწყოს გამოყენებით.
ასეთმა რთულმა შეცდომამ შესაძლოა გამოუცდელი მომხმარებლები გააბრაზოს. ისინი არ იცნობენ ამ ტერმინოლოგიას. გარდა ამისა, DCOM შეცდომების აღმოფხვრა მტკივნეულია, ამიტომ თავიდან ვაიგნორებდი, მაგრამ მოვლენის ჟურნალი სავსე იყო მათით, რადგან ეს ხდებოდა ყოველ საათში. გადავწყვიტე გამომესწორებინა, გადავწყვიტე გამომეკვლია.
რეკლამა
მათთვის, ვინც არ იცით, COM არის Microsoft-ის ძველი ობიექტზე ორიენტირებული პროცესთაშორისი საკომუნიკაციო ტექნოლოგია. COM სერვერი არის შესრულებადი (EXE ან DLL), რომელიც ახორციელებს COM ობიექტების კომპლექტს. Windows-ის მრავალი კომპონენტი დანერგილია როგორც COM ობიექტები და მიჰყვება სტანდარტულ COM წესებს ერთმანეთთან კომუნიკაციისთვის. COM სერვერები რეგისტრირებულია რეესტრში და აქვთ კლასის ID (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 (Windows Search COM ობიექტი).
შემდეგი ნაბიჯი იყო ამ CLSID/AppID-ისთვის მინიჭება, სწორი ადგილობრივი აქტივაციის ნებართვები, რაც მას სურდა - ჩემი მომხმარებლის უსაფრთხოების ID (SID) და აპლიკაციის SID. ამისათვის Windows უზრუნველყოფს Component Services ინსტრუმენტს, რომელიც მომხმარებელს საშუალებას აძლევს შეცვალოს გაშვების და აქტივაციის ნებართვები, წვდომის ნებართვები და კონფიგურაციის ნებართვები COM სერვერებზე.
გახსენით Administrative Tools -> Component Services. გააფართოვეთ Component Services -> Computer -> My Computer -> DCOM Config. იპოვნეთ "WSearch" და დააწკაპუნეთ მასზე მარჯვენა ღილაკით -> Properties. გადადით "უსაფრთხოების" ჩანართზე.
ამის გაკეთების შემდეგ დავინახე, რომ ყველაფერი ნაცრისფერი იყო (გამორთული იყო) უსაფრთხოების ჩანართზე ამ COM ობიექტისთვის, ამიტომ მჭირდებოდა ჩემი მომხმარებლის ანგარიშის სრული ნებართვების მიცემა რეესტრში. ისევ გავხსენი Regedit და იმავე კლავიშზე გადავედი
HKEY_CLASSES_ROOT\AppID\{9E175B9C-F52A-11D8-B9A5-505054503030}
და შეცვალა ნებართვები. ჯერ თქვენ უნდა აიღოთ საკუთრება (მოამოწმეთ „მფლობელის ჩანაცვლება ქვეკონტეინერებსა და ობიექტებზე“), შემდეგ დაამატეთ თქვენი მომხმარებლის სახელი და მისცეთ სრული კონტროლი. ამის შემდეგ, შეგიძლიათ შეცვალოთ მფლობელობა თავდაპირველ ანგარიშზე (NT Service\TrustedInstaller).
მფლობელობის მიღება და ადმინისტრატორის ნებართვების მიცემა ძალიან მარტივია Winaero-სთან ერთად RegOwnershipEx აპლიკაცია.
ახლა ხელახლა გავხსენი Component Services (Dcomcnfg.exe) და გადავედი WSearch თვისებებზე, უსაფრთხოების ჩანართზე და ახლა შეძლო უსაფრთხოების ნებართვების რედაქტირება გაშვებისა და აქტივაციის ნებართვებზე, რომლებიც ნაჩვენებია ასე ეს:
უსაფრთხოების ჯგუფის მეშვეობით, ყველას, ჩემს მომხმარებლის ანგარიშს უკვე აქვს ლოკალური აქტივაციის ნებართვები, მაგრამ ასევე ნაჩვენებია 3 სხვა SID, რომლებიც არ არის ცნობილი მომხმარებლის ანგარიშები ან ჯგუფები, როგორც მათ ხატულაზე მიუთითებს. ეს არის განაცხადის SID და ეხება აპლიკაციებს. მოვლენის ჟურნალის შეცდომამ ასევე თქვა "... მუშაობს აპლიკაციის კონტეინერში მიუწვდომელია SID (S-1-15-2-1430448594-2639229838-973813799-439329657-1197984847-4069167804-1277922394).
ახლა Windows ობიექტის ამომრჩევი UI არ გაძლევთ საშუალებას დაამატოთ განაცხადის SID-ები უსაფრთხოების ძირითადი ობიექტებისთვის. ასე რომ, დამატებაზე დაწკაპუნების შემდეგ, მე დავაწკაპუნე Advanced... და შემდეგ იპოვე ახლა. აქ ჩამოთვლილია ყველა ობიექტი. მაგრამ მათი უმეტესობა იყო ანგარიშის SID. მე შევამჩნიე "ALL APPLICATION PACKAGES", რომელიც, როგორც სახელი გულისხმობს, ალბათ არის ჯგუფი ყველა აპლიკაციის პაკეტისთვის, ამიტომ ავირჩიე იგი. დააწკაპუნეთ OK ყველგან მის დასამატებლად და შემდეგ მიეცით ლოკალური გაშვების და ლოკალური აქტივაციის ნებართვები.
ახლა OK-ზე დაწკაპუნებით და Component Services UI-ის დახურვის შემდეგ, შეცდომა გაქრა მოვლენის ჟურნალიდან, რაც ნიშნავს, რომ WSearch COM კომპონენტს ახლა აქვს სწორი ადგილობრივი გაშვების და აქტივაციის ნებართვები.
მე დავწერე ეს სტატია, როგორც ზოგადი გზამკვლევი, რათა დავეხმარო ვინმეს მსგავსი გზით აღმოფხვრას DCOM შეცდომები მათ Event Log-ში. მე ჯერ კიდევ მაწუხებს, რატომ არ აქვს Windows-ს ჯერ კიდევ ინსტრუმენტი, რომ ადვილად აღადგინოს სწორი ნებართვები COM ობიექტებზე, თუ ისინი არეულობენ.