2012-01-11 37 views
7

Tôi có một tập lệnh NSIS hoạt động tốt cho một ứng dụng lớn. Tôi đã đọc nhiều chủ đề trên web, nhưng không thể có câu trả lời rõ ràng cho những điều sau: có thể cài đặt một ứng dụng bằng NSIS, khi được khởi chạy (bất kể loại người dùng) tự động được chạy với tư cách quản trị viên không? Nếu điều này là có thể làm thế nào nó có thể đạt được?NSIS: Cài đặt Ứng dụng để luôn chạy với tư cách Quản trị viên

Lưu ý: Tôi đã áp đặt rằng gói NSIS phải được chạy như admin sử dụng

RequestExecutionLevel admin 

Tôi đã thử viết yêu cầu UAC với mục đăng ký các ứng dụng sử dụng method này nhưng tôi không thể nhận được lệnh RUNASADMIN để biên dịch vì nó không có định dạng bắt buộc cho NSIS.

Trả lời

17

Để đả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 ...

+0

Cảm ơn thời gian của bạn. Câu trả lời thực sự tốt ... – MoonKnight

+0

Rực rỡ trong thực tế! – MoonKnight

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