Bài viết hướng dẫn cách tắt chọn lọc UAC (User Account Control) cho một ứng dụng cụ thể mà không tắt hoàn toàn dịch vụ UAC. Xem xét các phương pháp sử dụng cờ tương thích RunAsInvoker.
UAC yêu cầu người dùng xác nhận mọi hành động đòi hỏi quyền Administrator. Đây là cơ chế bảo vệ hiệu quả Windows khỏi virus, trojan, worm, rootkit... Tuy nhiên một số người thấy cửa sổ UAC phiền toái và muốn tắt, dù Microsoft và chuyên gia bảo mật khuyến nghị không nên tắt.
Cờ RunAsInvoker cho phép chạy ứng dụng với ngữ cảnh kế thừa từ tiến trình cha. Điều này bỏ qua xử lý manifest ứng dụng và phát hiện tiến trình cài đặt. Tham số này không cấp quyền Admin, chỉ bỏ qua lời nhắc UAC.
Ví dụ: tắt UAC cho Registry Editor (regedit.exe). Dù tài khoản có quyền Admin local, chạy regedit vẫn hiện UAC xác nhận.

Lưu ý quan trọng: Nếu chương trình cần quyền Admin để thay đổi cài đặt/hệ thống file, sau khi tắt UAC bằng RunAsInvoker, chương trình vẫn chạy dưới quyền user hiện tại. Nếu user không có quyền thay đổi, chương trình sẽ thất bại. Cũng có ít ứng dụng chỉ chạy ở chế độ "Run as administrator", bỏ qua cờ RunAsInvoker.
- Tắt UAC cho chương trình bằng Application Compatibility Toolkit
- Bật cờ RunAsInvoker qua Registry
- File Batch chạy ứng dụng ở chế độ RunAsInvoker
1. Tắt UAC Cho Chương Trình Bằng Application Compatibility Toolkit
Cần cài Application Compatibility Toolkit (phần của Windows ADK). Tải Windows ADK mới nhất cho Windows 10 tại trang Microsoft.
Chạy adksetup.exe, khi cài đặt (cần Internet) chỉ chọn mục Application Compatibility Tools.

Hệ thống có 2 phiên bản Application Compatibility Administrator — 32-bit và 64-bit. Chạy phiên bản phù hợp với bitness của ứng dụng cần tắt UAC.

Chạy Compatibility Administrator (32-bit) với quyền Admin (!). Tại node Custom Databases, chuột phải New Database → Create New → Application Fix.

Nhập tên ứng dụng (regedit), nhà cung cấp (Microsoft), đường dẫn file thực thi (C:\Windows\System32\regedit.exe).

Bỏ qua cửa sổ Compatibility Mode (ấn Next). Tại cửa sổ Compatibility Fixes, tích chọn RunAsInvoker.
Có thể test chạy ứng dụng bằng nút Test Run để xác nhận không còn UAC.

Tại hộp thoại Matching Information, chỉ định tham số kiểm tra (version, checksum, size...). Để tránh tạo lại file compatibility patch sau update Windows 10, để mặc định COMPANY_NAME, PRODUCT_NAME, ORIGINAL_FILENAME.

Mẹo: Để chống giả mạo file thực thi bởi hacker, có thể yêu cầu kiểm tra thêm (CHECKSUM, FILE_VERSION, FILE_SIZE...). Lưu ý: kiểm tra thêm làm chậm khởi động ứng dụng.
Nhấn Finish, đặt tên file gói sửa tương thích (ví dụ regedit.sdb). File này chứa hướng dẫn chạy ứng dụng với các tùy chọn tương thích đã chỉ định.

Áp dụng gói sửa tương thích cho ứng dụng. Làm từ console Compatibility Administrator (chọn Install trong menu) hoặc từ command prompt nâng cao:
sdbinst -q c:\ps\regedit.sdb
Nếu đúng, hiện thông báo cài đặt thành công:
Installation of regedit complete.

Sau cài đặt, bản ghi xuất hiện trong danh sách chương trình đã cài (Programs and Features).

Thử chạy ứng dụng trong phiên user không có quyền Admin local. Nay nên khởi động không yêu cầu UAC.
Kiểm tra đặc quyền tiến trình: Mở Task Manager, tab Processes, thêm cột "Elevated". Xác nhận regedit.exe chạy ở chế độ không đặc quyền (Elevated = No).

Trong tiến trình registry editor này, user chỉ chỉnh sửa được key/parameter của chính mình. Nếu thử chỉnh/sửa tạo ở HKLM (system), báo lỗi: "You don't have the requisite permissions".

Sau này gói sửa tương thích có thể triển khai cho nhiều máy trong domain AD qua Group Policy.
Để gỡ bỏ gói sửa tương thích:
sdbinst –u c:\ps\regedit.sdb
2. Bật Cờ RunAsInvoker Qua Registry
Có thể bật cờ RUNASINVOKER trên Windows 10/8.1/7 qua registry. Cờ tương thích có thể đặt cho một user hoặc tất cả user máy tính.
Ví dụ với regedit, tạo tham số registry mới (REG_SZ) tại khóa HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers:
- Tên giá trị: C:\windows\regedit.exe
- Dữ liệu giá trị: RunAsInvoker

Để bật cho tất cả user local, tạo tham số tại khóa:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Trong môi trường domain, có thể import/triển khai cài đặt registry này cho user qua GPO.
3. File Batch Chạy Ứng Dụng Ở Chế Độ RunAsInvoker
Cách khác chạy chương trình không cần quyền Admin và bỏ qua UAC prompt.
Tạo file .bat với nội dung:
Set ApplicationPath="C:\windows\regedit.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Khi chạy file bat này dưới user thường, ứng dụng chỉ định sẽ khởi động không có UAC prompt.
Tóm lại, đã xem cách tắt UAC cho chương trình cụ thể mà không tắt hoàn toàn UAC. Cho phép chạy chương trình Windows dưới user non-admin không cần UAC prompt và không nhập mật khẩu Admin.