2010-12-15 104 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來終止它。

相關問題