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
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
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
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?
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.
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.
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