Laden...

Eigenen Software-Updater UAC konform umbauen

Erstellt von HeikoAdams vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.849 Views
HeikoAdams Themenstarter:in
62 Beiträge seit 2017
vor 5 Jahren
Eigenen Software-Updater UAC konform umbauen

Hallo,
eine Altlast meiner Vorgänger ist, das unsere Anwendungen durch Kopieren der neuen Programmdateien von einem Netzlaufwerk nach c:\Programme, genauer gesagt

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

aktualisiert werden.

Da seit Vista die UAC hier aber die Blutgrätsche auspackt, hat man sich damals dazu enschlossen, die UAC zu deaktivieren, was ich jetzt gerne revidieren würde.

Jetzt ist meine Frage, wie ich das Aktualisierungsprogramm so umbaue, dass das bisherige Verhalten erhalten bleibt, ich die UAC reaktivieren kann und bei Updates nicht der "Wollen Sie wirklich" Dialog der UAC aufpoppt?

Wer ordentlichen Code schreibt, lebt entspannter 8)

HeikoAdams Themenstarter:in
62 Beiträge seit 2017
vor 5 Jahren

Jaein. Ich möchte die UAC aktivieren, aber nicht diesen ständigen "Wollen Sie wirklich" Dialog, weil das für die Anwender einfach nur nervig ist.

Was ich noch vergaß: Die betreffende Anwendung wird auch zum Starten der Anwendungen verwendet und kopiert damit im Prinzip bei jedem Stand die Dateien der Anwendungen neu vom Netzlaufwerk auf den Rechner.

Wer ordentlichen Code schreibt, lebt entspannter 8)

T
2.219 Beiträge seit 2008
vor 5 Jahren

Ich würde hier UAC verwenden und den Anwender ruhig damit nerven, es hat schon seinen Grund warum dies so gelst wird!
Du hast sonst nur die Wahl bei dem Benutzern UAC abzuschalten oder den jeweiligen User zu einem Admin zu machen, damit er nur noch Ja/Nein sieht ohne sein PW eingeben zu müssen.
Von beidem würde ich aber abraten, da man damit klar die Sicherheit absenkt!

Es wäre auch sinnvoller, nur bei Änderungen der Dateien, diese von der Freigabe zu beziehen.
Hier würden ein einfacher Hash Vergleich reichen um einfache Änderungen festzustellen.
Dies dürfte auch die Menge der UAC Abfragen auf lange Sicht absenken, je nachdem ob die Dateien im Programme Ordner gelesen und ausgeführt werden dürfen, selbst wenn der Benutzer unprevilegiert ist.
Wozu also jedesmal alles wieder von der Freigabe laden und eben die UAC Abfrage auslösen, wenn es keine Änderungen gab?
Oder werden über die Freigabe auch Dateien, die dann lokal abgespeichert werden, abgelegt und abgerufen?

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

H
114 Beiträge seit 2007
vor 5 Jahren

Hallo HeikoAdams,

wenn du auf die UAC verzichten willst, dann solltest du deine Anwendung einfach in einen Ordner installieren in den der Benutzer schreiben darf. Im einfachsten Fall einfach unterhalb des Benutzerprofils unter C:\Users{MyUser}{MyApp}.
Läuft deine Anwendung von da, dann kannst du einfach ohne UAC Dateien kopieren und austauschen, da der Benutzer die notwendigen Zugriffsrechte schon hat (AFAIK macht es Chrome ähnlich, damit ein Update still im Hintergrund erfolgen kann).
Erscheint mir zumindest einfacher, als die UAC irgendwie umgehen zu wollen, was IMHO nicht oder nicht ohne Workarounds möglich ist.

Grüße, HiGHteK

HeikoAdams Themenstarter:in
62 Beiträge seit 2017
vor 5 Jahren

Oder werden über die Freigabe auch Dateien, die dann lokal abgespeichert werden, abgelegt und abgerufen?

Nein, es werden von der Freigabe ausschließlich die Programmdateien (*.exe, *.dll) auf den lokalen Rechner kopiert.

Wer ordentlichen Code schreibt, lebt entspannter 8)

P
441 Beiträge seit 2014
vor 5 Jahren

Kannst du einen Updater Prozess nicht als Hintergrundservice installieren?
Dann könnte der schreibende Rechte auf den Ordner bekommen und dort die Programme updaten ohne dass ein Benutzereingriff notwendig ist.

Soll eine manuelle Aktualisierung notwendig sein, so müsstest du eine Interaktionsschnittstelle schreiben. Aber das ist kein hexenwerk.

So funktioniert das "Ich will was installieren" Programm bei uns auf Arbeit auch und sorgt dafür, dass Programme richtig installiert werden können ohne das Adminrechte der Nutzer notwendig sind.

16.806 Beiträge seit 2008
vor 5 Jahren

UAC zu deaktivieren und blind zu umgehen ist verantwortunglos. Nichts anderes.
Es gibt Lösungen, die administrative Rechte bei der Installation benötigen (zB ein Windows Service, der dann Updaten darf, so macht es Chrome)
Siehe dazu auch How does Chrome update without UAC

Ohne Adminrechte oder den Dialog, der seine absolute Berechtigung hat, gehts aber (Gott sei dank) nicht wirklich.
Wer in Zeiten von Leaks und Co immer noch nicht verstanden hat, wozu solche Mechanismen da sind - und zwar nicht zum Gängeln des Users - hat vermutlich die letzten 15 Jahre verpennt 😃