ในโพสต์นี้ ฉันจะแสดงวิธีแก้ไขข้อผิดพลาดด้วย EventID 10016 จาก DistributedCOM ต้นทางบนคอมพิวเตอร์ที่ใช้ Windows 10 หรือ Windows Server 2012 R2 เหตุการณ์ DCOM 10016 เกิดขึ้นได้ทั่วไปในทั้งไคลเอ็นต์และเซิร์ฟเวอร์ Windows เวอร์ชันเริ่มต้นจาก Windows XP และคุณสามารถแก้ไขข้อผิดพลาดนี้ได้ในลักษณะเดียวกันโดยไม่คำนึงถึงเวอร์ชันของ Windows
ปัญหาแสดงตัวเองดังนี้:ข้อผิดพลาดต่อไปนี้ปรากฏใน Windows Event Viewer ในส่วนระบบเมื่อคอมพิวเตอร์บูทหรือพยายามเริ่มหรือติดตั้งแอปพลิเคชันบางตัว:
ชื่อบันทึก :ระบบที่มา :DistributedCOM
รหัสกิจกรรม :10016
ระดับ :ข้อผิดพลาด
ผู้ใช้ :SYSTEM
คำอธิบาย :การตั้งค่าการอนุญาตเริ่มต้นของเครื่องไม่อนุญาตให้เปิดใช้งาน Local Activation สำหรับแอปพลิเคชัน COM Server ที่มี CLSID {000209FF-0000-0000-C000-000000000046} และ APPID ไม่พร้อมใช้งานสำหรับผู้ใช้ IIS APPPOOL\appIISPool SID (S-1-5-82 -3351576649-1006875745-771203599-42452693-1279824824) จากที่อยู่ LocalHost (การใช้ LRPC) ที่ทำงานอยู่ในคอนเทนเนอร์ของแอปพลิเคชัน Unavailable SID (ไม่พร้อมใช้งาน) สิทธิ์การรักษาความปลอดภัยนี้สามารถแก้ไขได้โดยใช้เครื่องมือการดูแลระบบ Component Services
ตามคำอธิบายข้อผิดพลาด:ผู้ใช้บางคน (เช่น IIS Apppool) หรือระบบ (NT AUTHORITY\SYSTEM) พยายามเริ่มส่วนประกอบ COM บางตัวโดยใช้โครงสร้างพื้นฐาน DCOM และไม่สามารถทำได้เนื่องจาก "Local Launch" หรือ "Local" หายไป การเปิดใช้งาน” อนุญาต รหัสข้อผิดพลาดประกอบด้วยรหัสของคลาสสำหรับส่วนประกอบ COM และแอปพลิเคชันเท่านั้น มาลองพิจารณาว่าตัวระบุนั้นเป็นของแอปพลิเคชั่นใดและให้สิทธิ์ที่จำเป็นในการเปิดและเปิดใช้งานได้สำเร็จ
คัดลอก CLSID และ APPID จากคำอธิบายเหตุการณ์ ในกรณีของฉันคือ:
CLSID :{000209FF-0000-0000-C000-000000000046}
APPID:{AD65A69D-3831-40D7-9629-9B0B50A93843}
(ในบางกรณี อาจไม่ระบุตัวระบุแอปพลิเคชัน – APPID ไม่พร้อมใช้งาน)
นอกจากนี้ ให้สังเกตด้วยว่าสิทธิ์ใดบ้างที่ขาดหายไป (สิทธิ์การเปิดใช้งานในเครื่อง) และสำหรับบัญชีใด (NT AUTHORITY\SYSTEM หรือ IIS APPPOOL\appIISPool SID — S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824)
ในแต่ละกรณี คลาส แอปพลิเคชัน ตัวระบุบัญชี และประเภทการเข้าถึงอาจแตกต่างกัน- เรียกใช้ Registry Editor (regedit.exe);
- ไปที่รีจิสตรีคีย์ที่สอดคล้องกับ CLSID ของคุณ ในกรณีของฉันคือ HKEY_CLASSES_ROOT\CLSID\ {000209FF-0000-0000-C000-00000000000046}; ในบางกรณี คุณต้องตรวจสอบรีจิสตรีคีย์ด้วย HKEY_CLASSES_ROOT\Wow6432Node\CLSID\ เมื่อคุณเชื่อมต่อกับรีจิสตรีจากระยะไกล รีจิสตรีจะอยู่ในส่วนรีจิสตรี HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
- ในพารามิเตอร์คลาส ต้องระบุชื่อแอป (ในกรณีของฉันคือแอปพลิเคชัน Microsoft Word); บ่อยครั้งที่ข้อผิดพลาด DCOM 10016 เกิดขึ้นกับส่วนประกอบต่อไปนี้:Immersive Shell
CLSID:{C2F03A33-21F5-47FA-B4BB-156362A2F239}
APPID:{316CDED5-E4AE-4B15-9113-7055D84DCC97}
RuntimeBroker
CLSID:{D63B10C5-BB46-4990-A94F-E40B9D520160}
APPID :{9CA88EE3-ACB7-47C8-AFC4-AB702511C276} - คลิกขวาที่รีจิสตรีคีย์และเลือก Permissions;
- คลิกที่ ขั้นสูง ปุ่ม;
- NT Service\TrustedInstaller หรือ ระบบ จะถูกระบุใน เจ้าของ ส่วน;
- คลิกปุ่ม เปลี่ยน ปุ่มและระบุชื่อบัญชีผู้ดูแลระบบของคุณ บันทึกการเปลี่ยนแปลง;
- โปรดทราบว่าชื่อของเจ้าของคีย์รีจิสทรีปัจจุบันได้เปลี่ยนเป็นบัญชีของคุณแล้ว ทำเครื่องหมายที่ช่องแทนที่เจ้าของในคอนเทนเนอร์ย่อยและวัตถุ และคลิก "ตกลง";
- เพิ่มบัญชีผู้ดูแลระบบของคุณในรายการสิทธิ์และให้การควบคุมทั้งหมด สิทธิ์ของมัน;
- คุณได้ให้สิทธิ์กับรีจิสทรีคีย์ด้วย CLSID ตอนนี้ คุณต้องทำซ้ำขั้นตอนก่อนหน้านี้และเปลี่ยนความเป็นเจ้าของและการอนุญาตสำหรับบัญชีผู้ดูแลระบบในคีย์รีจิสทรีของ APPID ของคุณจากคำอธิบายข้อผิดพลาด (เช่น HKEY_CLASSES_ROOT\AppID\ {AD65A69D-3831-40D7-9629-9B0B50A93843};
- ตอนนี้ให้เรียกใช้คอนโซลการจัดการส่วนประกอบ (dcomcnfg ) ในฐานะผู้ดูแลระบบ (แผงควบคุม -> รายการแผงควบคุมทั้งหมด -> เครื่องมือการดูแลระบบ -> บริการคอมโพเนนต์)
- ในคอนโซลคอมโพเนนต์ ไปที่ส่วน บริการคอมโพเนนต์ -> คอมพิวเตอร์ -> คอมพิวเตอร์ของฉัน -> การกำหนดค่า DCOM . ในรายการส่วนประกอบ COM ให้ค้นหาชื่อของส่วนประกอบที่คุณกำหนดไว้ในขั้นตอนที่สอง (ค่าในคอลัมน์ ID แอปพลิเคชันต้องตรงกับ CLSID ของคุณจากคำอธิบายข้อผิดพลาด DCOM 10016) หากคุณไม่พบส่วนประกอบของคุณในรายการ คุณอาจใช้ Windows รุ่น 64 บิตและ องค์ประกอบที่คุณต้องการเรียกใช้คือส่วนประกอบแบบ 32 บิต ในกรณีนี้ คุณต้องเริ่มคอนโซล DCOM โดยใช้คำสั่ง:
mmc comexp.msc /32
. - คลิกที่ ความปลอดภัย แท็บ การควบคุมแบบฟอร์มทั้งหมดที่สามารถเปลี่ยนแปลงได้ หากคุณเปิดคอนโซล dcomcnfg ก่อนเปลี่ยนการอนุญาตบนรีจิสตรีคีย์ของส่วนประกอบ การตั้งค่าทั้งหมดในแท็บความปลอดภัยจะ ถูกล็อค (ไม่สามารถเปลี่ยนแปลงได้) แม้ว่าคุณจะเริ่มคอนโซลในฐานะผู้ดูแลระบบก็ตาม
- ในกรณีของฉัน แอปพลิเคชันไม่ได้รับอนุญาตให้เปิดใช้งานในเครื่อง ใน สิทธิ์ในการเปิดและเปิดใช้งาน ส่วน เลือก ปรับแต่ง และคลิกปุ่ม แก้ไข ปุ่ม;
- คุณต้องเพิ่มบัญชีที่ระบุในคำอธิบายข้อผิดพลาดลงใน ACL ขึ้นอยู่กับข้อความในข้อผิดพลาด DCOM 10016 ซึ่งอาจเป็น SYSTEM ผู้ใช้เฉพาะ หรือบัญชีที่เรียกใช้ IIS Pool (ในกรณีนี้ คุณต้องเพิ่มการเข้าถึงสำหรับกลุ่ม IIS_IUSR ในเครื่อง) หาก NT AUTHORITY\NETWORK SERVICE ถูกระบุในข้อผิดพลาดเริ่มต้นแทนที่จะเป็น NT AUTHORITY\SYSTEM คุณต้องกำหนดสิทธิ์ในการเปิดใช้และเปิดใช้งานในเครื่องสำหรับบัญชี NetworkService
- ให้สิทธิ์ที่จำเป็นสำหรับบัญชี ตัวอย่างเช่น การเปิดใช้ในพื้นที่ =อนุญาต และ การเปิดใช้งานในพื้นที่ =อนุญาต .
- รีสตาร์ทคอมพิวเตอร์และตรวจสอบบันทึกเหตุการณ์ ข้อผิดพลาด DCOM 10016 ควรหายไป