UAC เป็นส่วนประกอบหลายองค์ประกอบที่ดำเนินการโดยหลายไบนารี
ควบคุมบัญชีผู้ใช้ (UAC) หมายถึงองค์ประกอบหลายอย่างที่ร่วมกันในรูปแบบสถาปัตยกรรม UAC ฉันจะตรวจสอบสั้น ๆ บางส่วนของพวกเขาพร้อมกับไบนารีที่รับผิดชอบในการดำเนินการของพวกเขา แต่ก่อนอื่นนี่เป็นภาพรวมของสถาปัตยกรรม UAC จากบทความ Microsoft Docs วิธีการควบคุมบัญชีผู้ใช้งาน :
Local Security Authority (LSA) / โทเค็นที่กรอง
แนวคิด "องค์ประกอบแรก" ของ UAC ถูกนำไปใช้โดยระบบย่อย Local Security Authorityซึ่งจัดการการสร้างโทเค็นการเข้าถึงของผู้ใช้ในระหว่างกระบวนการเข้าสู่ระบบ เริ่มต้นด้วย Windows Vista กระบวนการเข้าสู่ระบบได้รับการแก้ไขเพื่อให้เมื่อผู้ดูแลระบบเข้าสู่ระบบด้วย UAC เปิดใช้งานระบบย่อย LSA จะสร้างโทเค็นการเข้าถึงสองสัญญาณแยกกันสำหรับผู้ใช้:
- หนึ่งในนั้นที่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบและ
- โทเค็นที่สองที่กรองด้วยการเข้าถึงของผู้ใช้มาตรฐาน
ดังที่แสดงไว้ที่นี่กระบวนการนี้แตกต่างจากการเข้าสู่ระบบของผู้ใช้มาตรฐาน:
บริการระบบย่อย LSA อยู่ในlsass.exe
กระบวนการ
virtualization
ที่เพิ่มเข้ามาใน Windows 7 และไฟล์รีจิสทรี Virtualizationเป็นส่วนประกอบของ UAC ที่shimsการใช้งานเก่าที่ไม่สอดคล้องกับ UAC แต่จำเป็นต้องมีสิทธิ์ในการดูแลเพื่อให้เข้าถึงการป้องกันพื้นที่หนึ่งของระบบแฟ้มหรือ Registry:
เมื่อแอ็พพลิเคชันการดูแลระบบที่ไม่สอดคล้องกับ UAC พยายามเขียนลงในไดเรกทอรีที่ได้รับการป้องกันเช่น Program Files UAC จะให้มุมมองเสมือนจริงของแอปพลิเคชันกับทรัพยากรที่พยายามเปลี่ยน สำเนาเสมือนจริงถูกเก็บรักษาไว้ในโปรไฟล์ของผู้ใช้
แหล่ง
โดยการเปลี่ยนเส้นทางการเข้าถึงเหล่านี้ไปยังพื้นที่ที่ไม่ต้องการสิทธิ์ผู้ดูแลระบบแอปพลิเคชันเหล่านี้ยังคงทำงานได้แม้จะมีการเปิดใช้งาน UAC ในระบบ
virtualization นี้จะดำเนินการในเคอร์เนล
บริการข้อมูลแอปพลิเคชัน
บริการข้อมูลแอปพลิเคชัน (AIS) อ่านรายการของแอปพลิเคชันและทำงานร่วมกับ UAC Consent Prompt เพื่อตรวจสอบว่าแอปพลิเคชันได้รับอนุญาตให้ดำเนินการด้วยสิทธิ์ระดับสูง (เช่นเริ่มในบริบทของโทเค็นการเข้าถึงระดับผู้ดูแลระบบ . โพสต์บล็อกนี้ให้ภาพรวมที่ดีของบทบาทในกระบวนการ UAC:
AIS อำนวยความสะดวกในการใช้งานแอพพลิเคชั่นแบบอินเทอร์แอคทีฟด้วยสิทธิ์ระดับผู้ดูแลระบบเพิ่มเติม หากบริการนี้หยุดทำงานผู้ใช้จะไม่สามารถเปิดใช้แอปพลิเคชันด้วยสิทธิ์การดูแลระบบเพิ่มเติมที่พวกเขาอาจต้องการ ... เชลล์ตรวจสอบกับบริการนี้เมื่อเปิดตัวแอปพลิเคชัน AIS เป็นส่วนที่อ่านรายการและส่วน 'trustInfo' xml ที่มีข้อกำหนดสำหรับ 'RequestExecutionLevel' ...
นี่คือกราฟิกที่ตามหลังข้อความที่กล่าวถึงโดยละเอียดเกี่ยวกับบทบาทของ AIS ในกระบวนการขอความยินยอมจาก UAC:
เอไอเอสจะถูกนำมาใช้ในการ DLLappinfo.dll
svchost.exe
ซึ่งจะดำเนินการโดย
แสดงความยินยอม
@ คำตอบของ BenN อธิบายถึงบทบาทสำคัญของ Prompt Prompt (ใน) UAC ที่มีชื่อเสียง สิ่งนี้ถูกนำไปใช้ในconsent.exe
และมีหน้าที่รับผิดชอบในการขอความยินยอมจากผู้ใช้หรือหนังสือรับรองของผู้ดูแลระบบเพื่อให้สามารถเปิดตัวแอปพลิเคชันที่ต้องการสิทธิ์ของผู้ดูแลระบบ
Secure Desktop
Secure Desktop คือตำแหน่งที่ UAC แสดงความยินยอมพร้อมท์ตามค่าเริ่มต้น UACBlog ของ Microsoftบอกเราว่ามีอะไรพิเศษเกี่ยวกับเดสก์ท็อปนี้เมื่อเทียบกับ User Desktop:
คุณมักจะโต้ตอบกับ [Secure Desktop] เมื่อคุณเข้าสู่ระบบ Windows เนื่องจาก Logon UI ทำงานบน Secure Desktop ความแตกต่างหลักของ Secure Desktop จาก User Desktop คือกระบวนการที่เชื่อถือได้เท่านั้นที่ทำงานในฐานะระบบได้รับอนุญาตให้ทำงานที่นี่ (เช่นไม่มีสิ่งใดทำงานในระดับสิทธิ์ของผู้ใช้) และเส้นทางที่จะไปยัง Secure Desktop จาก Desktop ผู้ใช้ต้องเชื่อถือด้วย ห่วงโซ่ทั้งหมด
แนวคิดเบื้องหลังการใช้เมื่อขอความยินยอมจากผู้ใช้ในการเรียกใช้แอปพลิเคชันที่มีสิทธิ์ในการยกระดับสูงคือมัลแวร์ไม่สามารถเลียนแบบ Secure Desktop ได้เว้นแต่จะมีสิทธิ์ของผู้ดูแลระบบอยู่แล้ว
สรุป: UAC ไม่ได้เป็นเพียงไบนารีเดียว มันเป็นโครงสร้างของระบบย่อยแบบสาน
ยังมีแง่มุมอื่น ๆ ของสถาปัตยกรรม UAC ที่ไม่ได้กล่าวถึงในที่นี้ แต่สิ่งนี้ควรให้หลักฐานที่เพียงพอสำหรับข้อเท็จจริงที่:
- UAC ไม่ได้ดำเนินการในไบนารีเดียว
- หากเปิดใช้งานมันเป็นส่วนสำคัญของการปฏิบัติงานด้านการบริหาร
นับตั้งแต่เปิดตัวใน Windows Vistaนั้นได้รวมเข้ากับส่วนสำคัญของระบบปฏิบัติการอย่างลึกซึ้งทำให้ไม่สามารถลบรหัสทั้งหมดที่รับผิดชอบสำหรับ UAC โดยไม่ทำลายสิ่งอื่น ๆ (เช่นความสามารถในการเข้าสู่ระบบ!)
ฉันคิดว่ามันปลอดภัยที่จะบอกว่าถ้าคุณ "ลบ" อย่างมีประสิทธิภาพ "UAC คุณจะต้องทำลาย Windows