Nie sądzę, aby można było podnieść poziom aktualnie działającego procesu. Jak rozumiem, jest wbudowane w Windows Vista, że uprawnienia administratora są nadawane procesowi podczas uruchamiania. Jeśli spojrzysz na różne programy, które wykorzystują UAC, powinieneś zobaczyć, że faktycznie uruchamiają one oddzielny proces za każdym razem, gdy trzeba wykonać czynność administracyjną (Menedżer zadań to jeden, Paint.NET to drugi, a drugi to w rzeczywistości aplikacja .NET ).
Typowym rozwiązaniem tego problemu jest określenie argumentów wiersza poleceń podczas uruchamiania procesu z podwyższonym poziomem uprawnień (sugestia abatishcheva jest jednym ze sposobów na zrobienie tego), tak aby uruchomiony proces wiedział tylko o wyświetleniu określonego okna dialogowego, a następnie kończy się po wykonaniu tej czynności zakończony. W związku z tym użytkownik powinien prawie nie zauważyć, że nowy proces został uruchomiony, a następnie zamknięty, i powinien raczej wyglądać tak, jakby zostało otwarte nowe okno dialogowe w tej samej aplikacji (zwłaszcza jeśli ktoś włamał się do głównego okna proces podwyższony jest dzieckiem procesu nadrzędnego). Jeśli nie potrzebujesz interfejsu użytkownika do podwyższonego dostępu, jeszcze lepiej.
Aby uzyskać pełne omówienie UAC w systemie Vista, polecam zapoznać się z tym artykułem na ten temat (przykłady kodu są w C ++, ale podejrzewam, że będziesz musiał użyć WinAPI i P / Invoke, aby zrobić większość rzeczy w C # tak czy inaczej). Mam nadzieję, że teraz przynajmniej widzisz właściwe podejście, chociaż zaprojektowanie programu zgodnego z UAC nie jest trywialne ...