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