2010-12-15 3 views
0

호환 모드에서 Windows 2008 R2 서버, 즉 64 비트 O.에서 32 비트 응용 프로그램을 설치합니다. 설치 및 기능이 정상적으로 작동합니다.Dllhost.exe * 32는 64 비트 시스템에서 제거하는 동안 32 비트 리소스를 해제 할 수 없습니다.

그러나 응용 프로그램을 제거하려고 할 때 'COM 대리'와 관련된 오류가 발생합니다. 이 오류는 임의로 발생합니다.

"제거하기 전에 아래 응용 프로그램 닫기"라는 메시지 상자가 표시되고 "COM 대리 (프로세스 ID)"가 표시됩니다. 표시되는 ProcessID는 dllhost.exe * 32 프로세스의 것입니다. 호환 모드에서 32 비트 응용 프로그램을 지원하기 위해 64 비트 OS에서 시작된 특수 dllhost.exe입니다. 이 exe가 응용 프로그램에 필요한 32 비트 바이너리를 호스팅합니다. 이 exe의 수명은 32 비트 응용 프로그램이 64 비트 컴퓨터에서 실행될 때뿐입니다.

이상적으로 제거하는 동안 dllhost.exe * 32는 정상적으로 종료되어야하며 제거는 원활해야합니다. 그러나 이것은 때때로 발생하지 않습니다.

언젠가는 기다렸다가 dllhost.exe * 32를 수동으로 종료하면 제거가 정상적으로 작동합니다.

dllhost.exe * 32가 정상적으로 죽을 수없는 정확한 이유는 무엇입니까?

아무쪼록이 점에 관해 도움이 될 수 있으면 바랍니다.

+0

이 질문은 http://superuser.com/에서 더 잘 묻습니다. – BlackBear

답변

0

내 생각 엔 제거 절차는 프로세스를 종료하도록 요청하지 않습니다. 범용 절차가 없기 때문입니다. 대신, 제거가 시작될 때 응용 프로그램이 실행되지 않을 것으로 예상합니다.

분명히 서비스중인 COM 개체이므로 COM 개체를 사용하는 응용 프로그램 프로세스가 무엇인지 확인하고 해당 프로세스를 종료해야합니다. 좀 더 강력한 접근 방법으로서 : COM dll을 적절한 응용 프로그램 (COM 서버 프로세스)으로 바꾸고 해당 응용 프로그램을 종료하여 응용 프로그램을 종료하도록 준비하십시오.

관련 문제