Ngăn độ cao (UAC) cho một ứng dụng không cần đến nó [trùng lặp]


34

Câu hỏi này đã có câu trả lời ở đây:

Gần đây đã chuyển từ Vista 32bit sang Windows 7 64bit, một trong những chương trình của tôi hiện yêu cầu quyền quản trị.

Tôi sử dụng một trình soạn thảo văn bản khá kỳ lạ (Crimson Editor). Mặc dù không được thiết kế cho Vist / Win7 nhưng nó hoạt động tốt với Vista. Nhưng trong Windows 7, chương trình thực thi được thêm lá chắn UAC này vào biểu tượng của nó (mặc dù cờ "Chạy với tư cách quản trị viên" trong tab tương thích không được đặt) và nhắc nhở độ cao bất cứ khi nào tôi chạy nó.

Làm thế nào để Win7 xác định rằng ứng dụng giống như notepad này cần quyền quản trị? Làm thế nào tôi có thể ghi đè heuristic sai này?

Câu trả lời:


22

Không, lý do Crimson Editor làm điều này KHÔNG phải vì nó không được ký. (Và điều này không mới đối với Win7). Đó là bởi vì bảng kê khai ứng dụng, được nhúng vào thời gian biên dịch, chỉ định requestedPrivilegeLevel="highestLevel".

Theo bài đăng trên diễn đàn này , các nhà phát triển Crimson Editor đã thay đổi điều này trong phiên bản 237-241. Họ đã làm điều này bởi vì tính năng "Thêm Crimson Editor vào trình đơn ngữ cảnh shell" yêu cầu quyền quản trị viên.

Bản sửa lỗi dài hạn sẽ dành cho các nhà phát triển Crimson Editor sửa bản kê khai ứng dụng của họ. Họ nên tự thêm vào các menu ngữ cảnh shell trong khi cài đặt, hoặc ít nhất là cho người dùng biết họ phải tự chạy ứng dụng nâng cao (điều này dễ thực hiện) thay vì yêu cầu nó.

Đối với tất cả các ứng dụng có requestedPrivilegeLevel="highestLevel"trong bảng kê khai của chúng (sử dụng Chế độ xem đơn giản để xem bảng kê khai ứng dụng), bạn có thể sử dụng Bộ công cụ tương thích ứng dụng của Microsoft để bắt chước ứng dụng với bản sửa lỗi RunAsInvoker, buộc ứng dụng phải chạy với mã thông báo người dùng chuẩn của bạn.

Để biết thêm thông tin về cách sử dụng Bộ công cụ tương thích ứng dụng, hãy xem bài đăng này về việc áp dụng nó cho Crimson Editor hoặc hướng dẫn chung .


1
Ngoài ra, bạn có thể thay thế tệp kê khai hiện có bằng công cụ mt.exe dòng lệnh mà bạn có thể nhận được miễn phí với Visual Studio Express (kéo dài nhưng đáng giá nếu bạn gặp phải vấn đề này rất nhiều). Lưu ý rằng việc thay thế tệp kê khai được nhúng sẽ thay đổi tệp .exe để a) đảm bảo bạn có một bản sao của nó trong trường hợp bạn phá vỡ mọi thứ và b) nếu nó được ký, bạn sẽ phá vỡ chữ ký (nhưng dường như trong trường hợp này bạn có đã xác định rằng dù sao nó vẫn chưa được ký).
AdamV

the.d.stro, bạn là một phao cứu sinh, nó hoạt động rất tốt.
phloopy

1
+1 cho "sửa ứng dụng của họ" và sử dụng bộ công cụ AppCompat để sửa lỗi cho họ.
Ian Boyd

13

Tôi thấy rằng tôi có hai ứng dụng có vấn đề này. Một cái có 'update' trong tên tệp và cái kia có 'update' trong 'FileDecsription'. Tôi chỉ cần xóa từ 'cập nhật' khỏi hai ứng dụng này và không còn cảnh báo UAC nào nữa. Tôi đã tìm thấy thông tin trong phần 'Cách thức hoạt động của UAC' - 'Phát hiện trình cài đặt' tại:

http://msdn.microsoft.com/en-us/l Library / aa905330.aspx

Những trạng thái sau:

Phát hiện trình cài đặt chỉ áp dụng cho:

  • Thực thi 32 bit
  • Các ứng dụng không có yêu cầuExecutLevel
  • Các quy trình tương tác đang chạy như một Người dùng Chuẩn có bật UAC

Trước khi quy trình 32 bit được tạo, các thuộc tính sau được kiểm tra để xác định xem đó có phải là trình cài đặt hay không:

  • Tên tệp bao gồm các từ khóa như "cài đặt", "thiết lập" và "cập nhật".
  • Từ khóa trong các trường Tài nguyên Phiên bản sau: Nhà cung cấp, Tên công ty, Tên sản phẩm, Mô tả tệp, Tên tệp gốc, Tên nội bộ và Tên xuất khẩu.
  • Các từ khóa trong bảng kê khai ứng dụng song song được nhúng trong tệp thực thi.
  • Từ khóa trong các mục StringTable cụ thể được liên kết trong tệp thực thi.
  • Các thuộc tính chính trong dữ liệu tệp tài nguyên được liên kết trong tệp thực thi.
  • Chuỗi byte được nhắm mục tiêu trong tệp thực thi.

  • Lưu ý: Các từ khóa và chuỗi byte được lấy từ các đặc điểm chung được quan sát từ các công nghệ cài đặt khác nhau.


7

Nếu bạn có Visual Studio, bạn có thể làm như sau:

  1. Mở Visual Studio với tư cách Quản trị viên.
  2. Nhấn Ctrl-O để mở tệp
  3. Duyệt đến thư mục có Crimson Editor và mở cedt.exe
  4. Tệp được mở bằng trình chỉnh sửa tài nguyên và bạn sẽ thấy một cây có nhánh có tên RT_MANIFEST, mở rộng tệp này và nhấp đúp vào mục nhập con duy nhất có tên "1 [Tiếng Anh Hoa Kỳ]"
  5. Khoảng ba phần tư đường xuống ở cột bên phải, bạn sẽ thấy cấp độ được yêu cầuExecutLevel = "cao nhất có sẵn", thay đổi "cao nhất có sẵn" thành "asInvoker" (NB trình chỉnh sửa mặc định mở ở chế độ loại quá mức.
  6. Lưu tập tin và bạn đã hoàn tất.

HTH

Kevan


4

Có một số thông tin về các heuristic ở đây: http://msdn.microsoft.com/en-us/l Library / aa905330.aspx

Một bảng kê khai có thể giúp kiểm soát một số trong những điều này.


MSDN nói về "nhúng" bản kê khai. Điều đó không được thực hiện khi biên dịch chương trình? Tôi có phải tự biên dịch Crimson Editor để có được bảng kê khai như vậy không?
SealsSun

5
Bạn có thể thêm một tệp filename.exe.manifest trong cùng một thư mục và Windows sẽ đọc nó một cách thích hợp.
Nhân tố huyền bí
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.