7

Gần đây, tôi đã cố gắng cung cấp cho các quyền quản trị viên ứng dụng của mình mà không cần hệ thống yêu cầu "Bạn có muốn cấp quyền quản trị viên không?" và tôi đã tìm được cách hoạt động hoàn hảo.'__COMPAT_LAYER' thực sự làm gì?

Giải pháp Tôi tìm thấy

Tôi tạo ra một file bat tên nonadmin.bat và viết mã dưới đây vào nó

cmd min C set __COMPAT_LAYER=RunAsInvoker && start %1 

và nếu chúng ta kéo bất kỳ exe vào nó, nó cung cấp cho họ quyền quản trị (trước khi nó không cho phép tôi truy cập vào các biến môi trường mà không có nó nhưng sau khi kéo tập tin trên dơi nó đã làm việc).

Câu hỏi

Bây giờ câu hỏi của tôi là: -

  1. Điều gì thực sự '__COMPAT_LAYER' phương tiện và nó làm gì?
  2. Làm cách nào để xóa một thứ như vậy để nó yêu cầu quyền quản trị viên một lần nữa?
  3. Điều này có làm giảm bảo mật hệ thống không?
+0

Nó làm những gì được nói. Đặt tùy chọn tương thích. Ví dụ của bạn sẽ chỉ hoạt động đối với quản trị viên. Quản trị viên không có lỗi. –

+0

@Noodles bạn có thể vui lòng xây dựng và giải thích câu trả lời của 3 câu hỏi đó không. –

+4

Có lẽ nên đọc 'cmd/min/c ...'? – TripeHound

Trả lời

14

__COMPAT_LAYER, và Làm thế nào để sử dụng nó
__COMPAT_LAYER là một biến môi trường hệ thống cho phép bạn thiết lập các lớp tương thích, đó là những cài đặt bạn có thể điều chỉnh khi bạn nhấp chuột phải vào một file thực thi, chọn Properties, và chuyển đến tab Tương thích.

Imgur

several options to choose from ngoài một trong những bạn biết về:

  • 256Color - Chạy trong 256 màu
  • 640x480 - Chạy ở độ phân giải 640x480 màn hình
  • DisableThemes - Vô hiệu hóa chủ đề trực quan
  • Win95 - Chạy chương trình trong chế độ tương thích cho Windows 95
  • Win98 - Chạy chương trình trong chế độ tương thích cho Windows 98/ME
  • Win2000 - Chạy chương trình trong chế độ tương thích cho Windows 2000
  • NT4SP5 - Chạy chương trình ở chế độ tương thích cho Windows NT 4.0 SP5

Bạn có thể sử dụng nhiều tùy chọn bằng cách tách chúng với một không gian: set __COMPAT_LAYER=Win98 640x480

unset các __COMPAT_LAYER Biến
Các thiết lập này kéo dài càng lâu càng biến tồn tại. Biến dừng tồn tại khi dấu nhắc lệnh trong đó biến được đặt được đóng hoặc khi biến được đặt thủ công bằng lệnh set __COMPAT_LAYER=.

Vì bạn đang đặt biến qua tập lệnh theo đợt, biến sẽ tự động bị hủy khi tệp thực thi mà bạn kéo lên hoàn thành và tập lệnh đóng. Điều quan trọng cần lưu ý là các thiết lập biến tồn tại cho bất kỳ tiến trình con nào được sinh ra bởi tệp thực thi mà bạn chọn.

Các Tính Bảo Mật Của Sử dụng __COMPAT_LAYER
Setting __COMPAT_LAYER để RunAsInvoker không thực sự cung cấp cho bạn quyền quản trị nếu bạn không có họ; nó chỉ đơn giản ngăn cản cửa sổ bật lên UAC xuất hiện và sau đó runs the program as whatever user called it. Như vậy, nó là an toàn để sử dụng điều này vì bạn không có quyền quản trị một cách kỳ diệu.

Bạn cũng có thể đặt biến thành RunAsHighest (chỉ kích hoạt UAC nếu bạn có quyền quản trị, nhưng cũng không cấp quyền quản trị nếu bạn không có) hoặc RunAsAdmin (luôn kích hoạt UAC).

+0

Cảm ơn bạn đã giải thích chi tiết bạn tôi nhưng tôi cần biết 2 điều. 1) Tôi đã đọc nó là một biến môi trường nhưng bất cứ khi nào tôi tìm kiếm nó trong các biến môi trường không có điều như đã đề cập ở đó. 2) Như bạn đã nói để bỏ đặt nó, tôi cần phải viết "set __COMPAT_LAYER =" OR "đặt __COMPAT_LAYER = NULL" nhưng khi tôi thực hiện các lệnh này, dấu nhắc UAC không xuất hiện trở lại. Tôi nên làm gì để khiến chúng xuất hiện trở lại? –

+0

Tôi không thể sao chép vấn đề của bạn, nhưng như tôi đã nói trong câu cuối cùng, bạn _should_ có thể nói 'set __COMPAT_LAYER = RunAsAdmin' – SomethingDark

+0

@Agent_Spock: một số biến môi trường tồn tại theo mặc định, một số chỉ tồn tại nếu bạn đặt chúng; đây là một trong những thứ sau. Ngoài ra, nếu nhấp đúp vào tệp thi hành được đề cập không còn hiển thị lời nhắc UAC, điều đó có thể cho biết rằng nó không chứa tệp kê khai cho Windows biết liệu nó có cần độ cao hay không. Khi điều đó xảy ra, Windows sẽ đoán. Vì vậy, có lẽ Windows đã nhận thấy rằng bạn đã chạy nó thành công không phải là quản trị viên và quyết định theo dõi bộ. Ở mức nào, trừ khi bạn đặt vĩnh viễn biến môi trường trong sổ đăng ký hoặc thông qua bảng điều khiển, đó không phải là nguyên nhân. –

Các vấn đề liên quan