2016-02-17 25 views
8

Chúng tôi có một ứng dụng máy tính để bàn Win32 x86. Khi trình cài đặt được điều hành bởi người dùng chuẩn (không phải quản trị viên), chúng tôi tránh nâng cao và/hoặc hiển thị lời nhắc UAC và cài đặt theo C:\Users\username\AppData\Roaming\... thay vì thư mục chung Program Files.Làm thế nào để ngăn chặn trình gỡ cài đặt nâng cao cho người dùng Windows 10 chuẩn?

Trên Windows 10, khi trình gỡ cài đặt của chúng tôi được khởi chạy từ Control Panel -> Programs -> Programs and Features, không có lời nhắc UAC nào được hiển thị và trình gỡ cài đặt chạy mà không nâng cao. Đây là hành vi mong muốn. Khi trình gỡ cài đặt tương tự được khởi chạy từ Start -> Settings -> System -> Apps & features, lời nhắc UAC sẽ được hiển thị.

(Các hành vi tương tự có thể được nhìn thấy trong Opera cài đặt trình duyệt/uninstaller. Tôi đã thử nghiệm v35.0.2066.37.)

Tại sao các trình gỡ bỏ cùng hành xử khác nhau khi phóng từ Apps & features so Programs and Features?

Làm cách nào để tránh lời nhắc UAC khi trình gỡ cài đặt được khởi chạy từ các tính năng Apps &?

Lược khai chương trình cài đặt của chúng tôi bao gồm này:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" /> 
     </requestedPrivileges> 
    </security> 
</trustInfo> 

tôi đã cố gắng thay đổi requestedExecutionLevel, và cũng đã cố gắng loại bỏ trustInfo hoàn toàn, nhưng không có sự thay đổi trong hành vi của một trong hai cách.

Đã thử nghiệm trên Windows 10 phiên bản 1511 build 10586.104.

Chỉnh sửa: Chỉ cần làm rõ, trường hợp tôi đang cố gắng xử lý là nơi người dùng có tài khoản Standard và không biết mật khẩu của tài khoản Quản trị viên. Nếu họ thấy lời nhắc UAC khi họ cố gỡ cài đặt, họ không có lựa chọn nào khác ngoài việc hủy nó và trình gỡ cài đặt của chúng tôi không chạy.

+0

Tôi chỉ dành buổi sáng giao dịch với tính năng "này". Cách tiếp cận duy nhất có hiệu quả đối với chúng tôi là yêu cầu trình gỡ cài đặt tự khởi chạy lại với tư cách là người dùng hiện tại. Dưới đây là mô tả về cách tiếp cận, sử dụng Explorer để khởi chạy lại tệp thực thi: http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you -part-2-how/ chúng tôi sử dụng NSIS, vì vậy chúng tôi đã có thể sử dụng các ShellExecAsUser plug-in, mà là dựa trên các liên kết đầu tiên: http://nsis.sourceforge.net/ShellExecAsUser_plug-in –

+0

tôi giả sử điều này không giải quyết vấn đề chính, nhưng đối với chúng tôi, mối quan tâm là việc gỡ cài đặt không thành công khi chạy cao, vì nó cần truy cập HKCU và LocalAppData.Điều này không giải quyết được vấn đề ngăn chặn độ cao, nhưng ngay cả cài đặt Chrome của người dùng hiện tại (và như bạn đã lưu ý, Opera) cũng gặp vấn đề về độ cao trên Windows 10 khi gỡ cài đặt từ Ứng dụng và tính năng, vì vậy chúng tôi cho rằng nó không đủ để thất bại và thực hiện như người dùng hiện tại cho dù nó được đưa ra cao hay không. –

Trả lời

3

Đây là lỗi trong "Ứng dụng & tính năng" theo như tôi biết. Mọi người WiX có closed this issue là lỗi Windows và tôi cho rằng họ đã thông báo cho đúng người @ Microsoft. Hành vi này vẫn giống nhau trong phiên bản Insider 15042 mặc dù vậy có thể nó sẽ không được sửa chữa kịp thời cho Bản cập nhật của người sáng tạo.

Không có cách giải quyết nào mà bạn có thể sử dụng nếu người dùng chuẩn không thể nâng cao.

Nếu chúng có thể nâng cao thì bạn có thể sử dụng re-spawn workaround được đăng trong nhận xét hoặc tải thủ công hồ sơ người dùng và gọi RegOverridePredefKey nhưng cả hai đều là hacks xấu xí (IMHO).

+0

Bạn vừa lưu cho tôi một số tiền vô lý của việc gỡ lỗi, cảm ơn bạn. – johnwbyrd

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