Laden...

Prüfen ob UAC aktiv ist ohne Registry

Erstellt von Pioneer17 vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.687 Views
P
Pioneer17 Themenstarter:in
148 Beiträge seit 2007
vor 12 Jahren
Prüfen ob UAC aktiv ist ohne Registry

Hallo zusammen

gibt es eine Möglichkeit zu prüfen, ob die Windows UAC (Benutzerkntensteuerung) aktiv ist.
Im Internet habe ich verschiedene Varianten gefunden die jedoch die Registry verwenden. Ich gehe aber davon aus dass wenn die UAC aktiv ist, ich ggf. kein Zugriff auf die Registry von meinem Programm her habe.

Danke für die Hilfe.

16.842 Beiträge seit 2008
vor 12 Jahren

Da fällt mir doch glatt nen Bookmark ein: C# code to detect UAC elevation on Vista

P
Pioneer17 Themenstarter:in
148 Beiträge seit 2007
vor 12 Jahren

Hi Abt

diese Seite habe ich auch gefunden, jedoch zeigt diese nicht immer die richtigen Werte an.

Wenn Sie z.B. auch der zweituntersten Stufe steht, gibt das Programm an, dass die UAC nicht aktiv ist.

16.842 Beiträge seit 2008
vor 12 Jahren

Dann ist sie allem Anschein nach laut MS Definition ab der zweitem Stufe aus.
Der Code nutzt die Windows API - ich bezweifel, dass es hier unterschiedliche Schnittstellen bzw. Funktionen innerhalb der Schnittstelle gibt, die das auslesen.

Du scheinst also eine andere Definition von "AUS" als MS hier zu haben; unendlich viele Lösungen wirds hier nicht geben. Wenn Dir das nicht ausreicht und Du keinen Zugriff auf die Registry hast..

Wozu musst Du denn überhaupt wissen, ob UAC aus ist?
Wieso forderst Du nicht einfach von UAC die Rechte an, wenn Du sie brauchst?

P
Pioneer17 Themenstarter:in
148 Beiträge seit 2007
vor 12 Jahren

Ich möchte den Kunden so wenig wie möglich "stören". D.h. ich möchte eigentlich prüfen ob sie aktiv ist. Wenn ja dann speichere ich die Programmeinstellungen und Logbücher etc. in ProgramData\xxx, weil das Programm mit aktiver UAC ja keinen Schreibzugriff auf z.B. Program Files\xxx hat.

Ist die UAC nicht aktiv, dann speichere ich alles in den Installationspfad welcher meistens Program Files\xxx ist.

Die UAC hat vier Stufen: Standardeinstellung ist ja Stufe drei.
Wenn ich die UAC jetzt aber auf Stufe zwei setze, sagt mir das Programm, dass die UAC nicht aktiv ist. Somit gibt sie mir eine falsche Information, oder die Kriterien sind irgendwie anderst definiert.

Wenn es nach mir gehen würde, könnte ich das problemlos aus der Registry auslesen. Nur gibt es da ja auch Einschränkungen wenn die UAC aktiv ist, oder nicht?
Kann ich immer aus der Registry Werte auslesen wenn die UAC aktiv ist?

A
764 Beiträge seit 2007
vor 12 Jahren

Stellt sich noch die Frage, in wieweit das da Sinn macht.
Warum nicht gleich in den richtigen (ProgrammData) Ordner schreiben?

Dazu auch folgendes Szenario
Der User stellt UAC aus installiert dein Programm und stellt UAC wieder an.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Pioneer17,

du befindet sich auf einem Irrweg.

Du solltest die Dateien immer im richtigen (also dafür vorgesehenen) Pfad speichern und nicht nur wenn die UAC ausgeschaltet ist. Dateien, die vom Programm geändert werden, gehören jedenfalls weder ins Programmverzeichnis noch in ein Unterverzeichnis davon. Der Wunsch, dass Programm und alle Daten an einem Ort liegen, ist zwar nachvollziehbar, hat aber verschiedene Nachteile und verkennt die Arbeitsweise von und die Realitäten unter Windows (Stichworte: Multiuserfähigkeit, Roaming, ...)

Mal abgesehen davon, dass selbst wenn du bei der Installation zutreffend ermitteln könntest, ob der Benutzer die UAC ein oder ausgeschaltet hat, das ja nichts darüber aussagt, ob die UAC zum Zeitpunkt der Ausführung des Programms ein- oder ausgeschaltet sein wird. Vielleicht hatte der Benutzer die UAC gerade deshalb temporär ausgeschaltet, weil er mehrere Programme installieren wollte.

herbivore

P
Pioneer17 Themenstarter:in
148 Beiträge seit 2007
vor 12 Jahren

Ok, danke an Alle.
Werde es wohl oder übel umbauen 😉

Wie sieht es aber Grundsätzlich mit Zugriffen auf die Registry aus?
Davon ausgehend, dass der Benutzer welcher das Programm benutzt Admin Rechte hat, kann ich dann mit aktivierter UAC die Registry lesen und schreiben?

Wie sieht das mit Benutzer aus welche keine Admin Rechte haben?

Sollte ich Grundsätzlich davon absehen mit gewisse Infos in die Registry zu schreiben? Sollte ich besser eine "konfig-Datei" verwenden welche ebenfalls im ProgramData\xxx abgelegt ist?

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Pioneer17,

die Frage, wie und wo du die Konfiguration speicherst, hat mit UAC und Adminrechten nichts mehr zu tun. Der übliche Weg ist [Tutorial] Konfigurationsmodell im .NET Framework. Die Registry sollte eher nicht mehr genutzt werden.

herbivore

2.891 Beiträge seit 2004
vor 12 Jahren

Mal generell: Ob UAC aktiviert ist oder nicht, oder ob du Administrator bist oder nicht - das ganze sagt überhaupt nichts darüber aus, ob du z.B. bestimmte Schreibrechte hast.
Auch mit deaktivierten UAC und als Admin kann dir der Schreibzugriff im Programmverzeichnis (oder Registry, etc.) verwehrt bleiben.