Laden...

Vista UAC und C# - Wie geht man vor?

Erstellt von Blacal vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.492 Views
B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 16 Jahren
Vista UAC und C# - Wie geht man vor?

Hallo,

ich habe gerade ein Problem mit dem UAC von Windows Vista (Das Rechtesystem).
In meiner Anwendung werden zwar allgemein keine Administratorrechte benötigt, nur gibt es irgendwo 2 Buttons, die eben solche benötigen, und zwar um einen Dienst zu installieren und wieder zu deinstallieren. Diese werden aber nicht offt benötigt.

Nun wollte ich das so machen wie andere Vista Programme wie der Explorer auch: Starten ohne Administratorrechte, und erst nach Adminrechten abfragen, sobald der Benutzer diese auch braucht. Sprich, sobald er den Dienst installieren / deinstallieren möchte.

Meine Frage ist nun, wie man da mit C# am besten vorgeht.

Ich habe schonmal versucht, einen eigenden Prozess für diesen zweck zu starten, der Adminrechte braucht. Funktioniert auch super. Problem ist nur, dass man gegebenenfalls öffters nach Adminrechten gefragt wird. Beispielsweise wenn ich zuerst auf deinstallieren, und danach auf installieren klicke.

Mfg

871 Beiträge seit 2005
vor 16 Jahren

Hallo,

bei CodeProject gibts nen netten Artikel darüber der alles genau beschreibt:

http://www.codeproject.com/KB/vista-security/UAC_Shield_for_Elevation.aspx

Grüsse,
Egon

B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 16 Jahren

hm... hilft mir jetzt eigendlich nicht wirklich weiter. Problem daran ist, dass man so wie in diesen Artikel beschrieben die komplette Anwendung neu starten muss, um Admin Rechte zu bekommen. Nicht gerade die Idealläsung.

Wie schon gesagt, mein Ziel ist es so hinzubekommen: Ich klicke auf einen Button der Admin-Rechte braucht -> Benutzer bestätigt -> alles läuft normal weiter, nur halt mit Admin-Rechten.

Ich bin mir auch sicher, dass das Andere Anwendungen so können. Wenn technisch so nicht möglich, vielleicht gibts da Tricks?

T
66 Beiträge seit 2006
vor 16 Jahren

Also es ist grundsätzlich in Vista nicht möglich, die Rechte eines laufenden Prozesses zu ändern.

Du könntest ja, wenn Admin Rechte benötigt werden einen extra Prozess mit Admin rechten starten und diesen so lange laufen lassen wie dein Programm läuft.
Alle Befehle die Adminrechte brauchen würden diese dann über den Adminprozess ausführen.

R
317 Beiträge seit 2006
vor 16 Jahren

Ich bin mir auch sicher, dass das Andere Anwendungen so können. Wenn technisch so nicht möglich, vielleicht gibts da Tricks?

Soviel ich weiß können das andre Anwendungen auch nicht, bzw. mir ists nie aufgefallen, dass das gehen sollte. Zwei Beispiele:

Visual Studio + Vista: Um ein Projekt z.B. aus dem Programm-Verzeichnis zu öffnen, muss Visual Studio mit Admin-Rechten neugestartet werden

AntiVir: Um die Lizenzdatei zu installieren, sind admin Rechte notwendig. Es wird dazu dann ein zweiter Prozess des gleichen Programms geöffnet, der nur den Dialog zum Lizenzdatei-Installieren anzeigt.

Du könntest die zwei Funktionen, also Installieren + Deinstallieren des Dienstes, in zwei eigene Projekte (Exe-Files) auslagern, und diese dann aus der Hauptanwendung einfach mit Admin-Rechten starten.

Dann muss die Hauptanwendung nicht beendet werden.

B
Blacal Themenstarter:in
387 Beiträge seit 2005
vor 16 Jahren

Soviel ich weiß können das andre Anwendungen auch nicht, bzw. mir ists nie aufgefallen, dass das gehen sollte. Zwei Beispiele:

Ich hab da jetzt haupsächlich an den Windows Explorer gedacht. Der fägt immer nach, wenn man etwas unerlaubtes machen will, und macht es dann ohne neuzustarten (jedenfalls soweit ich das in Erinnerung hab. Ich habs privat deaktiviert 😉.

Du könntest ja, wenn Admin Rechte benötigt werden einen extra Prozess mit Admin rechten starten und diesen so lange laufen lassen wie dein Programm läuft.
Alle Befehle die Adminrechte brauchen würden diese dann über den Adminprozess ausführen.

AntiVir: Um die Lizenzdatei zu installieren, sind admin Rechte notwendig. Es wird dazu dann ein zweiter Prozess des gleichen Programms geöffnet, der nur den Dialog zum Lizenzdatei-Installieren anzeigt.

Ok, dann werd ich das auch so machen. Sollte ja eigendlich auch kein größeres Problem sein. Danke für die schnelle Hilfe

Gruß
Roland