Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Khi bắt đầu, nhiều chương trình yêu cầu nâng cấp quyền (lá chắn trên biểu tượng ứng dụng), nhưng thực tế chúng không cần đặc quyền của quản trị viên để hoạt động bình thường. Ví dụ:bạn có thể cấp quyền theo cách thủ công cho người dùng của mình trên thư mục ứng dụng trong ProgramFiles và / hoặc các khóa đăng ký được chương trình sử dụng. Vì vậy, khi bắt đầu một chương trình như vậy trong tài khoản người dùng không phải quản trị viên, lời nhắc UAC sẽ xuất hiện và người dùng sẽ được yêu cầu nhập mật khẩu quản trị viên (nếu Kiểm soát tài khoản người dùng được bật trên máy tính). Để vượt qua cơ chế này, nhiều người dùng chỉ cần vô hiệu hóa UAC hoặc cấp đặc quyền quản trị cho người dùng bằng cách thêm tài khoản người dùng vào nhóm cục bộ “Quản trị viên”. Tất nhiên, cả hai phương pháp này đều không an toàn.

Tại sao một số ứng dụng Windows không chạy với người dùng tiêu chuẩn và yêu cầu quyền của quản trị viên?

Một ứng dụng có thể cần đặc quyền của quản trị viên để sửa đổi một số tệp (nhật ký, cấu hình, v.v.) trong thư mục riêng của ứng dụng đó trong C:\ Program Files (x86) \ SomeApp. Theo mặc định, người dùng không có quyền chỉnh sửa (viết và sửa đổi) trên thư mục này. Để chương trình này hoạt động bình thường, cần có quyền của quản trị viên. Để giải quyết vấn đề này, bạn phải cấp quyền sửa đổi theo cách thủ công và / hoặc viết quyền cho người dùng (hoặc nhóm Người dùng cài sẵn) trên thư mục ứng dụng ở cấp hệ thống tệp NTFS.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Lưu ý . Trên thực tế, không nên lưu trữ dữ liệu ứng dụng đang thay đổi trong thư mục riêng của nó trong C:\ Program Files. Tốt hơn nên lưu trữ dữ liệu ứng dụng trong hồ sơ người dùng. Nhưng đó là một câu hỏi về sự lười biếng và kém năng lực của các nhà phát triển ứng dụng.

Làm cách nào để chạy chương trình yêu cầu đặc quyền của quản trị viên đối với người dùng tiêu chuẩn?

Trước đó, chúng tôi đã mô tả cách tắt lời nhắc UAC cho một số ứng dụng nhất định bằng cách sử dụng RunAsInvoker tham số. Tuy nhiên, phương pháp này không đủ linh hoạt.

Bạn cũng có thể sử dụng RunA với mật khẩu quản trị viên đã lưu (trong Trình quản lý thông tin đăng nhập Windows) bằng cách sử dụng /SAVECRED Lựa chọn. Nó cũng không an toàn vì người dùng có thể sử dụng mật khẩu thông tin đăng nhập quản trị viên đã lưu để chạy bất kỳ chương trình nào trên máy tính này.

Hãy xem xét một cách dễ dàng hơn để buộc bất kỳ chương trình nào chạy mà không có đặc quyền của quản trị viên (không cần nhập mật khẩu quản trị viên) và đã bật UAC (Cấp 4, 3 hoặc 2 của thanh trượt UAC).

Hãy lấy Registry Editor làm ví dụ - regedit.exe (nó nằm trong thư mục C:\ Windows \). Chú ý đến lá chắn UAC bên cạnh biểu tượng ứng dụng. Biểu tượng này có nghĩa là sẽ yêu cầu nâng cao đặc quyền qua UAC để chạy chương trình này.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Nếu bạn chạy regedit.exe , bạn sẽ thấy cửa sổ Kiểm soát tài khoản người dùng yêu cầu thông tin đăng nhập của quản trị viên (Do you want to allow this app to make changes to your device? ). Nếu bạn không cung cấp mật khẩu và không xác nhận độ cao, ứng dụng sẽ không khởi động.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Hãy cố gắng bỏ qua yêu cầu UAC cho chương trình này. Tạo tệp văn bản run-as-non-admin.bat chứa mã sau trên Máy tính để bàn của bạn:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Để buộc regedit.exe chạy mà không có đặc quyền của quản trị viên và để chặn lời nhắc UAC, chỉ cần kéo tệp EXE mà bạn muốn bắt đầu vào tệp BAT này trên màn hình.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Sau đó, Registry Editor sẽ bắt đầu mà không có lời nhắc UAC và không cần nhập mật khẩu quản trị viên. Nếu bạn mở Trình quản lý tác vụ và thêm mục Nâng cao , bạn sẽ thấy rằng có quá trình regedit.exe mà không có trạng thái nâng cao (chạy với quyền của người dùng không phải quản trị viên).

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Cố gắng chỉnh sửa bất kỳ tham số nào trong tổ đăng ký HKEY_LOCAL_MACHINE. Như bạn có thể thấy, người dùng không thể chỉnh sửa mục trong khóa đăng ký này (người dùng không có quyền ghi vào khóa đăng ký hệ thống). Nhưng bạn có thể thêm hoặc chỉnh sửa các khóa đăng ký và thông số trong tổ người dùng của mình - HKEY_CURRENT_USER.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Theo cách tương tự, bạn có thể chạy bất kỳ ứng dụng nào bằng tệp BAT. Chỉ cần chỉ định đường dẫn đến tệp thực thi.

run-app-as-non-admin.bat
Set ApplicationPath="C:\Program Files\SomeApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Bạn cũng có thể thêm menu ngữ cảnh cho phép chạy tất cả các ứng dụng mà không cần nâng cao. Để thực hiện, hãy tạo tệp RunAsUser.REG, sao chép mã sau vào đó, lưu và nhập vào sổ đăng ký Windows bằng cách nhấp đúp vào tệp reg (bạn sẽ cần quyền quản trị viên để áp dụng thay đổi này).

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run as user without UAC privilege elevation"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Sau đó, để chạy bất kỳ ứng dụng nào mà không có đặc quyền của quản trị viên, chỉ cần chọn “ Chạy với tư cách người dùng không có đặc quyền UAC ”Trong menu ngữ cảnh của File Explorer.

Bạn có thể triển khai tùy chọn này cho tất cả các máy tính trong miền bằng cách nhập các thông số đăng ký bằng GPO.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Tôi xin nhắc lại một lần nữa rằng việc sử dụng chương trình ở chế độ RUNASINVOKER sẽ không cho phép bạn nâng cấp chương trình. RunAsInvoker ngăn chặn lời nhắc UAC và nói với chương trình rằng nó sẽ chạy với quyền của người dùng hiện tại, và không yêu cầu nâng cao đặc quyền. Nếu một chương trình thực sự cần các đặc quyền nâng cao để chỉnh sửa cài đặt hệ thống hoặc tệp, chương trình đó sẽ không hoạt động hoặc sẽ yêu cầu lại quyền quản trị viên.

Làm cách nào để Bỏ qua UAC bằng RunAsInvoker trong __COMPAT_LAYER?

Biến môi trường __COMPAT_LAYER cho phép bạn đặt các mức độ tương thích khác nhau cho các ứng dụng ( Khả năng tương thích trong thuộc tính của tệp EXE). Sử dụng biến này, bạn có thể chỉ định cài đặt tương thích sẽ được sử dụng khi bắt đầu một chương trình. Ví dụ:để khởi động ứng dụng ở chế độ tương thích Windows 8 và độ phân giải 640 × 480, hãy đặt như sau:

set __COMPAT_LAYER=Win8RTM 640x480

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Biến __COMPAT_LAYER có một số tùy chọn mà chúng tôi quan tâm. Có các tham số sau:

  • RunAsInvoker - chạy ứng dụng với các đặc quyền của quy trình mẹ mà không có lời nhắc UAC;
  • RunAsHighest - chạy chương trình có quyền cấp cao nhất dành cho người dùng (lời nhắc UAC sẽ xuất hiện nếu người dùng có đặc quyền của quản trị viên);
  • RunAsAdmin - chạy ứng dụng với tư cách quản trị viên (lời nhắc UAC xuất hiện mỗi lần).
Điều đó có nghĩa là tham số RunAsInvoker không cung cấp quyền quản trị viên mà chỉ loại bỏ lời nhắc UAC.

Mã CMD sau cho phép chế độ RunAsInvoker cho quy trình hiện tại và chạy chương trình được chỉ định mà không có độ cao:

set __COMPAT_LAYER=RUNASINVOKER
start "" "C:\Program Files\MyApp\testapp.exe"

Bật Chế độ RunAsInvoker trong Tệp kê khai tệp EXE

Như chúng tôi đã nói ở trên, Windows 10 hiển thị biểu tượng lá chắn UAC cho các chương trình yêu cầu độ cao để chạy. Các nhà phát triển đặt ra yêu cầu này khi biên dịch ứng dụng trong chương trình tệp kê khai .

Bạn có thể chỉnh sửa tệp kê khai của bất kỳ tệp exe nào và vô hiệu hóa yêu cầu chạy chương trình ở chế độ nâng cao.

Để chỉnh sửa tệp kê khai chương trình, bạn có thể sử dụng Resource Hacker miễn phí dụng cụ. Mở tệp thực thi của ứng dụng trong Resource Hacker.

Trong ví dụ này, tôi sẽ chỉnh sửa tệp kê khai của Autologon.exe công cụ của Sysinternals, có thể được sử dụng để tự động đăng nhập vào Windows mà không cần mật khẩu.

Trong cây bên trái, chuyển đến phần Tệp kê khai và mở tệp kê khai chương trình. Hãy chú ý đến phần xml sau:

<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>

Đó là nhờ requestAdministrator tùy chọn mà Windows luôn cố gắng chạy chương trình này với tư cách quản trị viên.

Thay đổi requestAdministrator thành asInvoker và lưu các thay đổi trong tệp exe.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Lưu ý rằng bây giờ lá chắn UAC đã biến mất khỏi biểu tượng chương trình và bạn có thể chạy nó mà không cần yêu cầu mật khẩu quản trị viên với quyền của người dùng hiện tại.

Làm thế nào để chạy chương trình mà không có đặc quyền của quản trị viên và bỏ qua lời nhắc của UAC?

Nếu tệp ứng dụng thực thi được ký bằng MS Authenticode (chứng chỉ Ký mã), thì sau khi sửa đổi tệp exe, nó có thể ngừng hoạt động hoặc đưa ra cảnh báo.

Trong trường hợp này, bạn có thể buộc chương trình sử dụng tệp kê khai bên ngoài. Tạo tệp văn bản thuần túy appname.exe.manifest (ví dụ:Autologon.exe.manifest ) trong thư mục có tệp exe và sao chép mã tệp kê khai từ Resource Hacker vào đó. Thay đổi requestAdministrator thành asInvoker . Lưu tệp kê khai.

Để Windows luôn cố gắng sử dụng tệp kê khai bên ngoài khi khởi chạy tệp exe, hãy bật một tham số đăng ký đặc biệt:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f

Khởi động lại Windows và đảm bảo chương trình đang sử dụng tệp kê khai bên ngoài cho biết chạy mà không có đặc quyền của quản trị viên.