【问题标题】:Dllhost.exe*32 is unable to release 32-bit resources during uninstallation on a 64 bit machineDllhost.exe*32 在 64 位机器上卸载时无法释放 32 位资源
【发布时间】:2010-12-15 10:26:43
【问题描述】:

我正在 Windows 2008 R2 服务器(即 64 位操作系统)上以兼容模式安装 32 位应用程序。 安装和功能工作正常。

但是,在尝试卸载应用程序时,我们收到与“COM Surrogate”相关的错误。此错误随机发生。

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

理想情况下,在卸载过程中,dllhost.exe*32 应该会优雅地死掉并且卸载应该是顺利的。但是,这种情况有时不会发生。

如果我等待某个时间或手动终止 dllhost.exe*32,则卸载工作正常。

我正在查看的是为什么 dllhost.exe*32 无法正常终止的确切原因以及解决方案。

如果有人可以在这方面帮助我们,请。

【问题讨论】:

标签: wix windows-server-2008 32bit-64bit uninstallation wix3


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2012-07-25
    • 2018-06-30
    • 2011-08-08
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多