2010-12-15 5 views
0

互換性モードで、Windows 2008 R2サーバー上の32ビットアプリケーション、つまり64ビットO.Sをインストールしています。 インストールと機能が正常に動作しています。64ビットマシンでアンインストール中にDllhost.exe * 32がアンインストール中に32ビットリソースを解放できない

しかし、アプリケーションをアンインストールしようとすると、「COM Surrogate」に関するエラーが発生します。このエラーはランダムに発生します。

「アンインストール前にアプリケーションを閉じる」というメッセージボックスが表示され、「COMサロゲート(プロセスID)」が表示されます。表示されるProcessIDは、dllhost.exe * 32プロセスのものです。これは、互換モードで32ビットアプリケーションをサポートするために64ビットOSで起動される特別なdllhost.exeです。このexeによって、アプリケーションに必要な32ビットのバイナリがホストされます。このexeファイルの存続期間は、32ビットアプリケーションのいずれかが64ビットマシンで実行されている場合に限られます。

理想的には、アンインストール中にdllhost.exe * 32が正常に終了し、アンインストールがスムーズでなければなりません。しかし、これは何度か起こっていません。

私がいつか待つか、手動でdllhost.exe * 32をkillすると、アンインストールが正常に動作します。

私が見ているのは、dllhost.exe * 32が正常に終了して解決できない正確な原因です。

誰もがこの点で私たちを助けることができたら、どうかしてください。

+0

この質問は、http://superuser.com/でよく聞かれます。 – BlackBear

答えて

0

私の推測では、アンインストール手順ではプロセスを終了させることさえしていないと思います。なぜならそうする普遍的な手順がないからです。代わりに、アンインストールが開始されたときにアプリケーションが実行されないことが予想されます。

明らかに、提供されているCOMオブジェクトであるため、COMオブジェクトを使用しているアプリケーションプロセスを特定し、そのプロセスを終了させる必要があります。より強力なアプローチとして、COM dllを適切なアプリケーション(COMサーバープロセス)に置き換え、そのアプリケーションを終了させるAPIを提供するようにアプリケーションを調整します。