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