UAC là một kiến trúc đa thành phần được thực hiện bởi nhiều nhị phân
Kiểm soát tài khoản người dùng (UAC) đề cập đến một số thành phần cùng tạo thành kiến trúc UAC . Tôi sẽ xem xét ngắn gọn một số trong số chúng cùng với các tệp nhị phân chịu trách nhiệm triển khai, nhưng trước tiên đây là tổng quan về kiến trúc UAC từ bài viết Microsoft Docs Cách thức kiểm soát tài khoản người dùng hoạt động :
Cơ quan bảo mật cục bộ (LSA) / Mã thông báo được lọc
Về mặt khái niệm, thành phần "đầu tiên" của UAC được triển khai bởi hệ thống con Cơ quan bảo mật cục bộ xử lý việc tạo Mã thông báo truy cập của người dùng trong quá trình đăng nhập. Bắt đầu với Windows Vista, quy trình đăng nhập đã được sửa đổi để khi Quản trị viên đăng nhập khi bật UAC, hệ thống con LSA tạo hai mã thông báo truy cập riêng cho người dùng:
- Một người có quyền truy cập quản trị viên đầy đủ và
- "Mã thông báo được lọc" thứ hai với quyền truy cập người dùng chuẩn
Như được hiển thị ở đây, quá trình này khác với quá trình đăng nhập người dùng chuẩn:
Dịch vụ hệ thống con LSA sống trong lsass.exe
quá trình.
Ảo hóa
Đã thêm vào Windows 7, Ảo hóa tệp và sổ đăng ký là một thành phần của UAC giúp che giấu các ứng dụng cũ không tuân thủ UAC mà chỉ yêu cầu quyền quản trị để truy cập vào các khu vực được bảo vệ nhất định của hệ thống tệp hoặc Sổ đăng ký:
Khi một ứng dụng quản trị không tuân thủ UAC cố ghi vào thư mục được bảo vệ, chẳng hạn như Tệp chương trình, UAC cung cấp cho ứng dụng chế độ xem ảo hóa của riêng nó về tài nguyên mà nó đang cố gắng thay đổi. Bản sao ảo hóa được duy trì trong hồ sơ người dùng.
Nguồn
Bằng cách chuyển hướng các nỗ lực truy cập này đến các khu vực không yêu cầu quyền quản trị, các ứng dụng này tiếp tục hoạt động mặc dù UAC được bật trên hệ thống.
Ảo hóa này được thực hiện trong Kernel .
Dịch vụ thông tin ứng dụng
Dịch vụ thông tin ứng dụng (AIS) đọc bản kê khai của ứng dụng và làm việc với Dấu nhắc đồng ý của UAC để xác định xem ứng dụng có được phép thực thi với quyền nâng cao hay không (nghĩa là bắt đầu trong bối cảnh mã thông báo truy cập cấp quản trị không được lọc khi đăng nhập) . Bài đăng trên blog này cung cấp một cái nhìn tổng quan tốt về vai trò của nó trong quy trình UAC:
AIS tạo điều kiện cho việc chạy các ứng dụng tương tác với các đặc quyền quản trị bổ sung. Nếu dịch vụ này bị dừng, người dùng sẽ không thể khởi chạy các ứng dụng với các đặc quyền quản trị bổ sung mà họ có thể yêu cầu .... Shell kiểm tra với dịch vụ này khi nó khởi chạy một ứng dụng. AIS là phần đọc tệp kê khai và phần xml 'trustInfo' có các yêu cầu đối với 'RequestExecutLevel' ...
Đây là một hình ảnh theo trích dẫn ở trên nêu chi tiết vai trò của AIS trong quy trình Nhắc nhở Đồng ý của UAC:
AIS được triển khai trong DLLappinfo.dll
được thực thi bởi svchost.exe
.
Sự đồng ý
Câu trả lời của @ BenN giải thích vai trò chính của Lời nhắc đồng ý UAC nổi tiếng (trong). Điều này được triển khai trong consent.exe
và chịu trách nhiệm nhận được sự đồng ý của người dùng hoặc thông tin đăng nhập của người dùng quản trị để cho phép khởi chạy một ứng dụng yêu cầu quyền quản trị viên.
Máy tính để bàn an toàn
Máy tính để bàn an toàn là nơi hiển thị Dấu nhắc đồng ý UAC theo mặc định. UACBlog của Microsoft cho chúng tôi biết những gì độc đáo về Máy tính để bàn này so với Bàn làm việc của Người dùng:
Bạn thường tương tác với [Bàn làm việc an toàn] khi bạn đăng nhập vào Windows vì Giao diện người dùng đăng nhập chạy trên Bàn làm việc bảo mật. Điểm khác biệt chính của Secure Desktop so với User Desktop là chỉ các quy trình đáng tin cậy đang chạy như HỆ THỐNG mới được phép chạy ở đây (nghĩa là không có gì chạy ở cấp đặc quyền của Người dùng) và đường dẫn đến Bàn làm việc an toàn từ Bàn làm việc của người dùng cũng phải được tin cậy thông qua toàn bộ chuỗi.
Ý tưởng đằng sau việc sử dụng nó khi yêu cầu sự đồng ý của người dùng để chạy ứng dụng có quyền nâng cao là phần mềm độc hại không thể bắt chước Secure Desktop trừ khi nó đã có quyền quản trị, trong trường hợp đó, lừa người dùng cấp cho họ là không cần thiết.
Kết luận: UAC không chỉ là một nhị phân. Đó là một kết cấu của các hệ thống con đan xen.
Vẫn còn những khía cạnh khác của kiến trúc UAC không được đề cập ở đây, nhưng điều này sẽ cung cấp đủ bằng chứng cho các sự thật rằng:
- UAC không được thực hiện trong một nhị phân duy nhất.
- Nếu được bật, đó là một phần không thể thiếu để thực hiện các tác vụ quản trị.
Kể từ khi được giới thiệu trong Windows Vista, nó đã được tích hợp sâu vào các phần chính của hệ điều hành, khiến nó không thể xóa tất cả các mã chịu trách nhiệm về UAC mà không phá vỡ những thứ khác (như khả năng đăng nhập của bạn!)
Tôi nghĩ thật an toàn khi nói rằng nếu bạn "xóa mạnh" UAC, bạn sẽ phá vỡ Windows.