2010-12-15 175 views
0

我在Windows 2008 R2服务器上以兼容模式安装32位应用程序,即64位O.S. 安装和功能工作正常。在64位机器上卸载时,Dllhost.exe * 32无法释放32位资源

但是,当试图卸载应用程序时,我们收到与'COM Surrogate'有关的错误。此错误随机发生。

显示消息框显示“卸载前关闭下面的应用程序”,并显示“COM Surrogate(进程ID)”。显示的ProcessID是dllhost.exe * 32进程。这是特殊的dllhost.exe,在64位操作系统中启动,以兼容模式支持32位应用程序。该exe文件托管应用程序所需的32位二进制文​​件。只有在64位机器上运行任何32位应用程序时,此exe的生命周期才会生效。

理想情况下,在卸载过程中,dllhost.exe * 32应该优雅地死去,卸载应该平滑。但是,这种情况并没有发生。

如果我等待某个时间或手动杀死dllhost.exe * 32,然后卸载工作正常。

我在看什么是确切的原因,为什么dllhost.exe * 32不能够优雅地死亡和解决它。

如果有人能够帮助我们,请在这方面。

+0

这个问题的外观,更好的问http://superuser.com/ – BlackBear 2012-03-31 13:26:50

回答

0

我的猜测是卸载过程甚至不要求进程终止,因为没有通用的过程来这样做。相反,它预计应用程序在卸载开始时不会运行。

由于它显然是一个正在服务的COM对象,因此您应该了解哪些(其他)应用程序进程正在使用COM对象,并使该进程终止。作为一种更蛮力的方法:用适当的应用程序(COM服务器进程)替换COM DLL,并安排该应用程序提供一个API来终止它。

相关问题