AW: Programmupdate im Dienst - So möglich?
Update.exe kann eine Laufende .exe umbennen! Das geht auch von hand im explorer... ich war auch erschrocken als ich das getestet hab, aber es geht.
|
AW: Programmupdate im Dienst - So möglich?
Windows hängt das Handle der offenen Datei einfach beim Umbennen um
|
AW: Programmupdate im Dienst - So möglich?
Zitat:
|
AW: Programmupdate im Dienst - So möglich?
Es gibt garkeine offenen FileHandle auf die EXE.
Der Programmcode wird via MMF in den Speicher gemappt. (ein FileHandle gibt es nur kurz beim Programmstart) Das Mapping auf den Dateiihnalt (Festplatte) arbeitet anders und daher wird das Umbenennen nicht behindert. Nur das Löschen/Ändern geht so halt nicht, aber der Adressaufkleber (der Dateiname) kann geändert werden. (MMF hängt halt nicht am Pfad/Namen, sondern am Inhalt) |
AW: Programmupdate im Dienst - So möglich?
Zitat:
Den Trick versuchte ich immer wieder in den letzten "Jahrzehnten" zu nutzen, um Updates am Server trotz offener Anwendung auszutauschen. Im einem Jahr ging es, im nächsten nicht mehr. Ok. An einem Netzwerkshare ist es komplizierter da noch weitere Faktoren rein spielen könnten |
AW: Programmupdate im Dienst - So möglich?
Zitat:
Zudem setzte ich den SecurityDiscriptor(ACL) des Dienstes , bei der installation(ServiceAfterInstall) herunter, damit er von Anwendungen mit Userrechten gestartet werden kann. Ich weiß nicht viel darüber, aber ich habe es mir (ein bisschen) von Chrome und (sehr viel)von Firefox abgeschaut. Nutze im Moment diese ACLs für den Update Service...oder Elevation Service...
Delphi-Quellcode:
Wenn die mal nicht mehr ausreichen passe ich die halt an.
{//Alte ACL (SDDL )
Permission := 'D:' + '(A;;CCLCSWRPWPDTLOCRRC;;;SY)' + // default permissions for local system '(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)' + // default permissions for administrators '(A;;CCLCSWLOCRRC;;;AU)' + // default permissions for authenticated users '(A;;CCLCSWRPWPDTLOCRRC;;;PU)' + // default permissions for power users '(A;;CCDCLCSWRPWPDTLOCRSDRC;;;BU)'+ // Built IN Users '(A;;RP;;;IU)'; // added permission: start service for interactive users } Permission := 'D:' + '(A;;CCLCSWRPWPDTLOCRRC;;;SY)' + // default permissions for local system '(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)' + // default permissions for built-in administrators '(A;;CCLCSWRPLOCRRC;;;IU)'+ // permissions for interactively logged-on user von MozillaMaintainance und ChromeElevation '(A;;CCLCSWRPLOCRRC;;;SU)'+ // permissions for service logon user von MozillaMaintainance und ChromeElevation '(A;;CCDCLCSWRPWPDTLOCRSDRC;;;BU)'+ // permissions for built-in users '(A;;CCLCSWRPLOCRRC;;;AU)' + // default permissions for authenticated users '(A;;CCLCSWRPWPDTLOCRRCRP;;;PU)'; // default permissions for power users |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz