Tôi không tin rằng có thể nâng cao quy trình hiện đang chạy. Theo tôi hiểu, nó được tích hợp vào Windows Vista mà các đặc quyền của quản trị viên được cấp cho một quy trình khi khởi động. Nếu bạn nhìn vào các chương trình khác nhau sử dụng UAC, bạn sẽ thấy rằng chúng thực sự khởi chạy một quy trình riêng biệt mỗi khi một hành động quản trị cần được thực hiện (Task Manager là một, Paint.NET là một, thực tế là ứng dụng .NET ).
Giải pháp điển hình cho vấn đề này là chỉ định các đối số dòng lệnh khi khởi chạy một quy trình nâng cao (gợi ý của abatishchev là một cách để thực hiện điều này), để quy trình được khởi chạy chỉ biết hiển thị một hộp thoại nhất định và sau đó thoát sau khi hành động này đã được thực hiện. đã hoàn thành. Do đó, người dùng khó có thể nhận thấy rằng một quy trình mới đã được khởi chạy và sau đó thoát ra, và sẽ xuất hiện như thể một hộp thoại mới trong cùng một ứng dụng đã được mở (đặc biệt nếu bạn có một số hack để tạo cửa sổ chính của tiến trình nâng lên một con của tiến trình mẹ). Nếu bạn không cần giao diện người dùng cho quyền truy cập nâng cao, thậm chí tốt hơn.
Để có một cuộc thảo luận đầy đủ về UAC trên Vista, tôi khuyên bạn nên xem điều này rất thông qua bài viết về chủ đề này (ví dụ về mã là trong C ++, nhưng tôi nghi ngờ bạn sẽ cần sử dụng WinAPI và P / Invoke để thực hiện hầu hết mọi thứ trong C # dù sao). Hy vọng rằng bây giờ bạn ít nhất đã thấy được cách tiếp cận phù hợp để thực hiện, mặc dù việc thiết kế một chương trình tuân thủ UAC còn xa vời ...