2011-10-24 35 views
6

Tôi có một vấn đề lớn với ứng dụng của mình. Tôi có một ứng dụng cập nhật & là một tệp exe riêng biệt. Khi có bản cập nhật, cập nhật sẽ cập nhật và khi hoàn thành quá trình, bản cập nhật sẽ khởi động ứng dụng của tôi. Vấn đề chính là - ứng dụng được cài đặt trong thư mục tệp chương trình, vì vậy trình cập nhật cần đặc quyền quản trị UAC và điều đó là ổn, nhưng khi tôi cần chạy trình cập nhật ứng dụng của mình cần chạy nó như một người dùng bình thường, bởi vì nó chạy như một quản trị viên kéo và thả không hoạt động (không phải là một vấn đề ứng dụng, UAC chặn nó). Tôi đã thử một số giải pháp khác nhau và thậm chí là một giải pháp khác, và thậm chí cả giải pháp này: How to run NOT elevated in Vista (.NET)C# quá trình bắt đầu với các đặc quyền hạ xuống từ quy trình cấp quản trị UAC

Nó đã không giúp tôi - ứng dụng của tôi chạy với tư cách quản trị viên.

Trả lời

9

Bạn nên tránh bắt đầu quá trình không nâng cao từ quy trình được nâng lên. Đó là một phần khó khăn và dễ bị lỗi.

Cách tiếp cận này là tốt hơn:

  1. updater của bạn ban đầu bắt đầu như ứng dụng không cao, và biểu hiện của nó có asInvoker cấp.
  2. Khi khởi động, nó tự khởi động lại với các đặc quyền nâng cao bằng cách sử dụng động từ runas và chuyển thông số dòng lệnh để biểu thị nó. Ví dụ này thực hiện cập nhật và trả về.
  3. Ở đây có updater không cao một lần nữa, và bắt đầu ứng dụng của bạn với cùng sử dụng thẻ không nâng lên mà bắt đầu trường hợp đầu tiên của updater trong bước 1.

Khá đơn giản và mạnh mẽ.

+0

+1; Dòng đầu tiên của câu trả lời này khá quan trọng. Tôi đã đọc các bài báo nói rằng đó là một ý tưởng tồi để cố gắng de-nâng cao (có được một de-nâng cao mã thông báo để mạo danh), không có vấn đề gì kỹ thuật bạn cố gắng. Không chắc chắn nơi để tìm thấy rằng hoặc những bài báo kể từ khi tôi đọc về nó khi Vista đầu tiên ra. Một tùy chọn khác được đưa ra trong câu hỏi này: http://stackoverflow.com/questions/1173630/how-do-you-de-elevate-privileges-for-a-child-process –

+0

Tôi sẽ thử nó như thế, cảm ơn vì câu trả lời. :) – n1tr0

+0

Làm theo cách này - hoạt động như một sự quyến rũ! Cảm ơn rất nhiều bạn bè của tôi! ;) – n1tr0

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