2012-08-14 7 views
6

Pracuję nad aplikacją C#, która musi wykryć, czy użytkownik działa jako administrator z podwyższonym poziomem uprawnień. Wypróbowałem solution sugerowany przez Stevena.Nie można wykryć, czy użytkownik jest uruchomiony z podniesionymi uprawnieniami, gdy nie jest wyświetlane wyskakujące okno UAC:

Sprawdziłem rozwiązanie na 5 komputerach i działa dobrze na 4 z nich.

Istnieje jeden komputer, który nigdy nie wyświetla komunikatu powiadomienia UAC, mimo że ustawię Kontrolę konta użytkownika na Always notify me.

Podczas sprawdzania kodu na tym komputerze, nawet jeśli wybiorę run as administrator, to nie działa, a metoda IsProcessElevated zwraca wartość false.

Czy coś jest nie tak z tą konkretną maszyną?

Czy istnieje sposób określenia, czy użytkownik jest podniesiony, czy nie, na tej platformie?

+0

Sprawdziłbym, czy maszyny mają wszystkie najnowsze dodatki Service Pack itp., A następnie spróbuj ponownie. –

+0

jest kilka alternatywnych rozwiązań do sprawdzenia UAC [tutaj] (http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-or-not-not). Czy można spróbować jednego z nich i sprawdzić, czy to działa? – Default

+1

Wydaje mi się, że coś jest nie tak z tym komputerem, a nie z kodem. Powinieneś otrzymywać monity UAC, jeśli jawnie skonfigurujesz je, aby wyświetlały monit. Ty nie jesteś. To wskazuje na problem z samym systemem. –

Odpowiedz

10

Po badaniach okazało się, że z Windows 7 oraz w celu określenia, czy dany użytkownik jest podwyższona administratora lub nie po prostu trzeba sprawdzić:

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
return principal.IsInRole (WindowsBuiltInRole.Administrator); 

(reszta kodu który sprawdza, czy token może być użyty w przypadku niepowodzenia tej opcji) Przetestowałem kod na niektórych maszynach i działa dobrze.

Moja aplikacja działa tylko na Win7 i wyżej, więc to rozwiązanie jest wystarczająco dobre dla mnie.

+1

+1 Dobra robota. Pytanie, do którego prowadzi OP, sprawiło, że byłem trochę oszołomiony, gdy go skanowałem, ponieważ miał bardzo mylący tytuł. –

+0

Kod ten działa również w systemie Windows 8.1. – codechurn

0

To może być głupie zapytać, ale kiedy zmieniłeś UAC, aby zawsze mnie powiadamiał, czy uruchomiłeś ponownie maszynę?

Miałem ten sam problem, a problem dotyczył samego systemu Windows, ponieważ status UAC nie został zmieniony, chyba że ponownie uruchomisz komputer.

Spróbuj, a także sprawdź: this link i this.

Powiązane problemy