2016-04-07 12 views
0

Unter Windows 7 Professional habe ich ein .Net-Programm, das das Windows-Ereignisprotokoll überwacht.InstallAnywhere kann die Datei nicht löschen, wenn .Net-Programm Benachrichtigungen zum Ereignisprotokoll abonniert hat

Auf der gleichen Arbeitsstation ist ein Java-Programm als Windows-Dienst installiert. Dieses Programm muss mit InstallAnywhere deinstalliert werden. Die Deinstallation endet mit der ausführbaren Datei des Java-Dienstes, die von meinem Überwachungsprogramm gehalten wird (was ich deutlich mit procexp.exe sehen kann), obwohl sie nur die Zeichenfolgen des Benachrichtigungsereignisses manipuliert - niemals versucht, weder das genannte Prozesshandle noch ein anderes zu öffnen Datei.

Ich frage mich, ob dies ein bekanntes Verhalten oder ein Fehler von Windows/.Net/InstallAnywhere ist.

Wenn es erwartet wird, gibt es einen Workaround?

Antwort

0

Ich denke, das ist Windows-Verhalten erwartet. Der Installer jre Ordner ist zum Lesen gesperrt. Wenn die Deinstallation schließlich beendet wurde, ist es möglich, dass der verbleibende Ordner (jre) oder eine Datei in diesem Ordner zum Löschen nach dem Neustart gekennzeichnet ist. Sie können überprüfen, ob HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations diesen Eintrag enthält. Wenn true, wird es nach dem Neustart gelöscht. Andernfalls müssen Sie Ihr Überwachungsprogramm stoppen, bevor Sie die Deinstallation versuchen.

+0

Ich musste wahrscheinlich erwähnen, dass, wenn mein Überwachungsprogramm nicht ausgeführt wird, oder es nicht mit dem Ereignisprotokoll verbunden ist - die Deinstallation löscht die ausführbare Java-Dienstdatei. Es scheint also so zu sein, dass Windows/.Net diese ausführbare Java-Handle im Kontext meines Programms hält, obwohl wir nichts damit zu tun haben. – Natan