Để đảm bảo rằng trình cài đặt đang chạy as administrator thường tôi khuyên bạn nên ví dụ nhỏ này:
Outfile RequireAdmin.exe
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
!include LogicLib.nsh
Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
Page InstFile
Section
SectionEnd
Các ứng dụng được cài đặt nên thực hiện các bước tương tự nếu nó luôn luôn cần phải chạy như admin, cho một ứng dụng Win32 đó sẽ là :
Nếu "tự động chạy với tư cách quản trị viên", nghĩa là bỏ qua độ cao UAC, thì điều đó không thực sự khả thi, toàn bộ điểm UAC là cho phép người dùng xác nhận/từ chối các hoạt động đặc quyền! Một số ứng dụng có được điều này bằng cách cài đặt dịch vụ NT thực hiện bất kỳ thao tác nào mà chúng yêu cầu thay mặt cho ứng dụng. Tôi sẽ không khuyên bạn nên điều này bởi vì nó điền vào máy người dùng với các dịch vụ và có thể làm suy yếu bảo mật của hệ thống nếu dịch vụ không được mã hóa chính xác.
Nếu bạn không viết ứng dụng bạn đang cài đặt thì các tùy chọn của bạn sẽ bị giới hạn hơn một chút. Nếu ứng dụng không có tệp kê khai, bạn có thể sử dụng một tệp kê khai external (myapp.exe.manifest
) .
Đặt chuỗi RUNASADMIN bên dưới khóa AppCompatFlags không thực sự là trình cài đặt nên làm, các tùy chọn tương thích này phải được kiểm soát bởi người dùng chứ không phải ứng dụng.
Chuỗi diễn đàn bạn đã liên kết cũng cho bạn biết về twoways để đặt cờ SLDF_RUNAS_USER
trên lối tắt, điều này sẽ không đảm bảo rằng ứng dụng được bắt đầu làm quản trị viên trong mọi tình huống, chỉ khi ứng dụng được bắt đầu từ lối tắt nó có thể là lựa chọn duy nhất của bạn nếu bạn không thể thay đổi chính ứng dụng ...
Cảm ơn thời gian của bạn. Câu trả lời thực sự tốt ... – MoonKnight
Rực rỡ trong thực tế! – MoonKnight