Tôi đang khởi chạy ứng dụng Windows của tôi theo cách này sau khi cài đặt hoàn tất:Làm cách nào để khởi chạy một tệp thực thi khi kết thúc cài đặt chính xác?
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchApplication"
...
Function LaunchApplication
ExecShell "" "$INSTDIR\Application.exe"
FunctionEnd
Nhưng điều này có tác dụng phụ kỳ lạ và không mong muốn. Rõ ràng là ứng dụng của tôi được khởi chạy với quyền quản trị.
Tôi không thể kéo & thả bất kỳ dữ liệu nào giữa trình duyệt web (được thử nghiệm với Firefox và IE) và ứng dụng của tôi.
Nếu tôi thoát khỏi đơn đăng ký của mình (phiên bắt đầu từ NSIS) và khởi động lại từ biểu tượng trình đơn bắt đầu, mọi thứ hoạt động! - Tôi có thể kéo & thả xuống trình duyệt mà không gặp sự cố nào.
Vì vậy, tôi nghi ngờ kể từ khi bắt đầu cài đặt có một yêu cầu UAC, bằng cách nào đó quyền UAC được chuyển cho quá trình tôi khởi chạy sau khi cài đặt. Kể từ khi các trình duyệt chạy trong một quá trình bảo mật thấp Windows từ chối exhange bất kỳ dữ liệu với họ (trong trường hợp quá trình được đưa ra với NSIS).
Làm thế nào để khởi động một exe từ NSIS, do đó vấn đề UAC/bảo mật này không xảy ra?
Bạn cần lưu ý rằng các quy trình nâng cao sẽ tự động khởi chạy các quy trình khác được nâng lên. Hành vi này đã tồn tại (và người dùng khó chịu) vì UAC đã được giới thiệu trong Vista. Hệ thống chặn chuyển dữ liệu giữa các ứng dụng không nâng cao và nâng cao trừ khi các khóa đăng ký nhất định được đặt. – EricLaw