Tôi có ứng dụng C# chạy và hiển thị biểu tượng khay. Tôi có một trình cài đặt cho ứng dụng khay của tôi, ứng dụng này sẽ khởi chạy ứng dụng sau khi cài đặt. Trình cài đặt yêu cầu quyền quản trị trong khi biểu tượng khay phải được chạy với quyền bình thường. Trình cài đặt của tôi hiện đang phá vỡ điều này - khi ứng dụng khay được cài đặt được khởi chạy, nó thừa kế quyền quản trị từ quá trình cài đặt.Cách khởi chạy chương trình với quyền người dùng thay vì cho phép hoạt động
Là một phần của trình cài đặt, tôi khởi chạy ứng dụng C# để thực hiện một số công việc tùy chỉnh. Ứng dụng nhỏ này hiện đang khởi chạy ứng dụng khay bằng cách gọi:
Process.Start(@"path/to/my/tray/app.exe");
Có cách nào để gọi ứng dụng khay với quyền của người dùng hiện tại hơn là quyền được cấp cho trình cài đặt không?
Tôi đã nghe rằng cách được khuyến nghị để thực hiện việc này là phải có một EXE bao quanh trình cài đặt khởi chạy trình cài đặt rồi khởi chạy chương trình đã cài đặt. Tôi muốn tránh điều này nếu có thể.
Tôi đang sử dụng WiX để xây dựng trình cài đặt MSI nên tôi cũng sẽ chấp nhận các giải pháp hoạt động trực tiếp từ WiX/MSI.
UseShellExecute dường như được đặt mặc định thành true nên có vẻ như điều này sẽ không giúp ích dù tôi chưa thử nó. Cảm ơn câu trả lời của bạn nhưng tôi nghi ngờ rằng exe wrapper sẽ là giải pháp "gọn gàng" duy nhất. – mchr
Tôi hiện đã thử nghiệm tính năng này và nó không hoạt động. Tôi cũng đã thử một dll C++ gọi http://msdn.microsoft.com/en-us/library/aa446583%28v=vs.85%29.aspx và khởi chạy bằng cách sử dụng mã thông báo bảo mật mới. Tuy nhiên, điều này không thể thay đổi người dùng sở hữu quy trình được khởi chạy - chỉ các quyền mà quy trình khởi chạy có. – mchr