2016-04-07 40 views
0

在Windows 7 Professional上,我有一个监视Windows事件日志的.Net程序。如果.Net程序订阅事件日志通知,则InstallAnywhere无法删除文件

在同一台工作站上安装了一个Java程序作为Windows服务。该程序需要使用InstallAnywhere卸载。卸载程序以我的监控程序(我可以清楚地看到使用procexp.exe)持有的Java服务可执行文件结束,即使它只是处理来自通知事件的字符串 - 从未尝试打开过程句柄或任何其他文件。

我不知道这是一个已知的行为还是Windows/.Net/InstallAnywhere的错误。

如果预计,是否有解决方法?

回答

0

我想这是预期的Windows行为。安装程序jre文件夹被锁定以供阅读。 如果卸载最终结束,则重新启动后可能会将剩余的文件夹(jre)或该文件夹中的文件标记为要删除。 您可以检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations是否包含该条目。 如果true,那么它将在重新启动后被删除。 否则,在尝试卸载之前,您将不得不停止您的监控程序。

+0

我可能不得不提一提,如果我的监控程序没有运行,或者它没有连接到事件日志 - 卸载的确会删除Java服务可执行文件。所以看起来Windows/.Net在我的程序的上下文中持有这个Java可执行句柄,即使我们与它无关。 – Natan