Я не верю, что возможно улучшить текущий запущенный процесс. Как я понимаю, в Windows Vista встроены права администратора для процесса при запуске. Если вы посмотрите на различные программы, использующие UAC, вы увидите, что они фактически запускают отдельный процесс каждый раз, когда необходимо выполнить административное действие (диспетчер задач - одна, Paint.NET - другая, последняя на самом деле является приложением .NET). ).
Типичное решение этой проблемы - указать аргументы командной строки при запуске процесса с повышенными правами (предложение Абатищева - один из способов сделать это), чтобы запущенный процесс знал только отображение определенного диалогового окна, а затем завершил работу после этого действие было завершено. Таким образом, пользователю вряд ли следует заметить, что новый процесс был запущен, а затем завершен, и скорее выглядел бы так, как будто открылось новое диалоговое окно в том же приложении (особенно если вы пытаетесь создать главное окно главного окна). повышенный процесс дочерний процесс родительского). Если вам не нужен пользовательский интерфейс для повышенных прав доступа, даже лучше.
Для полного обсуждения UAC в Vista, я рекомендую вам посмотреть в этой статье на эту тему (примеры кода на C ++, но я подозреваю, что вам нужно использовать WinAPI и P / В любом случае, вызывайте большинство вещей в C #). Надеюсь, теперь вы, по крайней мере, видите правильный подход, хотя разработка совместимой с UAC программы далеко не тривиальна ...