Wir haben eine .NET-Anwendung, die wir über ein MSI-Installationspaket an unsere Benutzer verteilen. Wir haben C++-Anwendungen, die jeden Morgen ausgeführt werden, um festzustellen, ob die Kopie der Anwendung des Benutzers veraltet ist, und wenn ja, ziehen wir die neue MSI herunter und installieren sie. Wenn die Anwendung noch läuft, müssen wir sie herunterfahren, damit wir die Aktualisierung durchführen können.
Unser Problem ist, dass es hin und wieder den Anschein hat, dass Windows unsere Anwendung "verliert". Es meldet dann nicht, dass der Prozess läuft, obwohl er läuft. Es erlaubt uns, die verwendete ausführbare Datei zu überschreiben oder sogar zu löschen, ohne die Anwendung zu beenden.
Vielleicht ist dies etwas, das häufig vorkommt - aber wir können nicht herausfinden, was los ist! Hat jemand einen Einblick in diese Situation?
Es scheint, als ob eine temporäre Kopie unserer Anwendung erstellt wird und das Programm von dieser Kopie aus gestartet wird. Aber wenn das der Fall ist, warum passiert es dann nicht immer?
EDIT: In unserem Programm verwenden wir die Funktion "EnumProcesses" aus dem Platform SDK, PSAPI.dll, um alle laufenden Prozesse aufzuzählen.