2012-08-14 3 views
6

Ich entwickle eine C# -Anwendung, die erkennen muss, ob der Benutzer als Administrator mit erhöhten Rechten ausgeführt wird. Ich habe versucht, die solution vorgeschlagen von Steven.Kann nicht erkennen, ob ein Benutzer mit erhöhten Rechten ausgeführt wird, wenn kein UAC-Popup vorhanden ist

Ich überprüfte die Lösung auf 5 Maschinen und es funktioniert gut auf 4 von ihnen.

Es gibt einen Computer, auf dem die UAC-Benachrichtigung nie angezeigt wird, obwohl ich die Benutzerkontensteuerung auf Always notify me eingestellt habe.

Bei der Überprüfung des Codes auf diesem Computer, auch wenn ich run as administrator wähle, funktioniert es nicht und die Methode IsProcessElevated gibt false zurück.

Stimmt etwas mit dieser speziellen Maschine nicht?

Gibt es eine Möglichkeit festzustellen, ob ein Benutzer auf dieser Art von Plattform erhöht ist oder nicht?

+0

Ich würde überprüfen, dass die Maschinen die neuesten Service Packs usw. hat und dann erneut versuchen. –

+0

gibt es einige alternative Lösungen, UAC [hier] zu überprüfen (http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-o--not). Ist es möglich, einen von denen zu probieren und zu sehen, ob das funktioniert? – Default

+1

Es klingt für mich, als ob etwas mit diesem Computer nicht stimmt, nicht mit dem Code. Sie sollten UAC-Eingabeaufforderungen erhalten, wenn Sie diese explizit zur Eingabeaufforderung konfigurieren. Du bist nicht. Das deutet auf ein Problem mit dem System selbst hin. –

Antwort

10

Nach einer Recherche fand ich heraus, dass von Windows 7 und auf, um zu bestimmen, ob ein Benutzer eine erhöhte Admin ist oder nicht, dass Sie nur die folgenden überprüfen müssen:

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

(Der Rest des Codes das überprüft das Token kann verwendet werden, falls diese Option fehlschlägt) Ich testete den Code auf einigen der Maschinen und es funktioniert ok.

Meine Anwendung läuft nur auf win7 und höher, also ist diese Lösung gut genug für mich.

+1

+1 Gute Arbeit. Die Frage, zu der der OP mich verlinkt hat, ließ mich beim Scannen ein wenig verwirren, da er einen sehr irreführenden Titel hatte. –

+0

Dieser Code funktioniert auch unter Windows 8.1. – codechurn

0

Es könnte dumm sein zu fragen, aber nachdem Sie die UAC geändert haben, um mich immer zu benachrichtigen, haben Sie die Maschine neu gestartet?

Ich hatte das gleiche Problem und das Problem war in Windows selbst als der UAC-Status wird nicht geändert, es sei denn, Sie starten den Rechner neu.

Probieren Sie es aus und überprüfen Sie auch this link und this.

Verwandte Themen