ค้นหาเว็บไซต์

ข้อผิดพลาด DistributedCOM 10016 ใน Windows: การตั้งค่าการอนุญาตเฉพาะแอปพลิเคชันไม่ให้สิทธิ์การเปิดใช้งานในเครื่อง


ในโพสต์นี้ ฉันจะแสดงวิธีแก้ไขข้อผิดพลาดด้วย EventID 10016 จากแหล่ง DistributedCOM บนคอมพิวเตอร์ที่ใช้ Windows 10 หรือ Windows Server 2012 R2 เหตุการณ์ DCOM 10016 พบได้ทั่วไปทั้งในเวอร์ชันไคลเอ็นต์และเซิร์ฟเวอร์ของ Windows โดยเริ่มจาก Windows XP และคุณสามารถแก้ไขข้อผิดพลาดนี้ได้ด้วยวิธีเดียวกันโดยไม่คำนึงถึงเวอร์ชันของ Windows

ปัญหาแสดงตัวเองดังนี้: ข้อผิดพลาดต่อไปนี้ปรากฏใน Windows Event Viewer ในส่วนระบบเมื่อคอมพิวเตอร์บูตหรือพยายามเริ่มหรือติดตั้งแอปพลิเคชันบางอย่าง:

ชื่อบันทึก: ระบบ
แหล่งที่มา: DistributedCOM
รหัสเหตุการณ์: 10016
ระดับ: ข้อผิดพลาด
ผู้ใช้: ระบบ
คำอธิบาย: การตั้งค่าสิทธิ์เริ่มต้นของเครื่องไม่ให้สิทธิ์การเปิดใช้งานภายในเครื่องสำหรับแอปพลิเคชัน COM Server ที่มี CLSID {000209FF-0000-0000-C000-000000000046} และ APPID ไม่พร้อมใช้งานสำหรับผู้ใช้ IIS APPPOOL ppIISPool SID (S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824) จากที่อยู่ LocalHost (ใช้ LRPC) ที่ทำงานอยู่ คอนเทนเนอร์แอปพลิเคชันไม่มี SID (ไม่พร้อมใช้งาน) สิทธิ์การรักษาความปลอดภัยนี้สามารถแก้ไขได้โดยใช้เครื่องมือการจัดการบริการคอมโพเนนต์

ตามคำอธิบายข้อผิดพลาด: ผู้ใช้บางคน (เช่น 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 ppIISPool SID — S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824)

ในแต่ละกรณี คลาส แอปพลิเคชัน ตัวระบุบัญชี และประเภทการเข้าถึงอาจแตกต่างกัน

  1. เรียกใช้ Registry Editor (regedit.exe);

  2. ไปที่คีย์รีจิสทรีที่เกี่ยวข้องกับ CLSID ของคุณ ในกรณีของฉันคือ HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046};

    ในบางกรณี คุณต้องตรวจสอบรีจิสตรีคีย์ HKEY_CLASSES_ROOT\Wow6432Node\CLSID\ ด้วย เมื่อคุณเชื่อมต่อกับรีจิสตรีจากระยะไกล จะอยู่ในส่วนรีจิสตรี HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID

  3. ในพารามิเตอร์คลาส ต้องระบุชื่อแอป (ในกรณีของฉันคือแอปพลิเคชัน 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}

  4. คลิกขวาที่รีจิสตรีคีย์แล้วเลือกสิทธิ์

  5. คลิกที่ปุ่ม ขั้นสูง

  6. NT Service\TrustedInstaller หรือ SYSTEM จะถูกระบุในส่วน Owner

  7. คลิกปุ่ม เปลี่ยน และระบุชื่อบัญชีผู้ดูแลระบบของคุณ บันทึกการเปลี่ยนแปลง

  8. โปรดทราบว่าชื่อของเจ้าของคีย์รีจิสทรีปัจจุบันได้เปลี่ยนเป็นบัญชีของคุณแล้ว ทำเครื่องหมายที่ช่อง แทนที่เจ้าของในคอนเทนเนอร์ย่อยและวัตถุ แล้วคลิก "ตกลง "

  9. เพิ่มบัญชีผู้ดูแลระบบของคุณในรายการสิทธิ์และให้สิทธิ์ ควบคุมทั้งหมด

  10. คุณได้ให้สิทธิ์กับคีย์รีจิสทรีด้วย CLSID ตอนนี้คุณต้องทำซ้ำขั้นตอนก่อนหน้านี้และเปลี่ยนความเป็นเจ้าของและการอนุญาตสำหรับผู้ดูแลระบบ บัญชีในคีย์รีจิสทรีของ APPID ของคุณจากคำอธิบายข้อผิดพลาด (เช่น HKEY_CLASSES_ROOT\AppID\{AD65A69D-3831-40D7-9629-9B0B50A93843};

  11. ตอนนี้เรียกใช้คอนโซลการจัดการคอมโพเนนต์ (dcomcnfg) ในฐานะผู้ดูแลระบบ (แผงควบคุม -> รายการแผงควบคุมทั้งหมด -> เครื่องมือการดูแลระบบ -> บริการคอมโพเนนต์);

  12. ในคอนโซลคอมโพเนนต์ ให้ไปที่ส่วน บริการคอมโพเนนต์ -> คอมพิวเตอร์ -> คอมพิวเตอร์ของฉัน -> การกำหนดค่า DCOM ในรายการคอมโพเนนต์ COM ให้ค้นหาชื่อคอมโพเนนต์ที่คุณกำหนดไว้ในขั้นตอนที่สอง (ค่าในคอลัมน์ ID แอปพลิเคชันต้องตรงกับ CLSID ของคุณจากคำอธิบายข้อผิดพลาด DCOM 10016)

    หากคุณไม่พบส่วนประกอบของคุณในรายการ คุณอาจใช้ Windows รุ่น 64 บิต และส่วนประกอบที่คุณต้องการเรียกใช้คือรุ่น 32 บิต ในกรณีนี้ คุณต้องเริ่มคอนโซล DCOM โดยใช้คำสั่ง:

    mmc comexp.msc /32
  13. คลิกแท็บ ความปลอดภัย ตัวควบคุมแบบฟอร์มทั้งหมดสามารถเข้าถึงได้เพื่อเปลี่ยนแปลง

    หากคุณเปิดคอนโซล dcomcnfg ก่อนเปลี่ยนสิทธิ์ในคีย์รีจิสทรีของคอมโพเนนต์ การตั้งค่าทั้งหมดในแท็บความปลอดภัยจะถูกล็อก (ไม่สามารถเปลี่ยนแปลงได้) แม้ว่าคุณจะเริ่มคอนโซลในฐานะผู้ดูแลระบบก็ตาม

  14. ในกรณีของฉัน แอปพลิเคชันไม่ได้รับอนุญาตให้เปิดใช้งานภายในเครื่อง ในส่วน สิทธิ์การเปิดใช้งานและการเปิดใช้งาน เลือก ปรับแต่ง แล้วคลิกปุ่ม แก้ไข

  15. คุณต้องเพิ่มบัญชีที่ระบุในคำอธิบายข้อผิดพลาดลงใน ACL ขึ้นอยู่กับข้อความในข้อผิดพลาด DCOM 10016 ซึ่งอาจเป็น SYSTEM ผู้ใช้เฉพาะ หรือบัญชีที่พูล IIS ทำงาน (ในกรณีนี้ คุณต้องเพิ่มการเข้าถึงสำหรับกลุ่ม IIS_IUSR ในเครื่อง)

    หากระบุ NT AUTHORITY\NETWORK SERVICE ในข้อผิดพลาดเริ่มต้น แทนที่จะเป็น NT AUTHORITY\SYSTEM คุณต้องกำหนดสิทธิ์ในการเปิดและเปิดใช้งานในเครื่องสำหรับบัญชี NetworkService

  16. ให้สิทธิ์ที่จำเป็นสำหรับบัญชี ตัวอย่างเช่น การเปิดในเครื่อง=อนุญาต และ การเปิดใช้งานในเครื่อง=อนุญาต

  17. รีสตาร์ทเครื่องคอมพิวเตอร์และตรวจสอบบันทึกเหตุการณ์ ข้อผิดพลาด DCOM 10016 ควรหายไป

บทความที่เกี่ยวข้อง