2010-07-08 5 views
2

이것은 약간 긴 시간이지만 런타임에 COM 클래스의 구현을 바꾸는 방법을 아는 사람이 있습니까?COM 클래스 구현을 런타임에 바꿉니다.

내 문제는 우리가 야생에서 COM DLL을 가지고 있지만 우리는 어떤 버전인지 완전히 알지 못하기 때문에 이것을 대체하기 위해 소프트웨어를 완전히 다시 빌드 할 필요가 없다는 것입니다. 구성 요소. 배포 할 필요가있는 한 줄 수정 방법이 있습니다. 위대한 방법은 단순히 다른 COM DLL이나 그 클래스를 대체하는 비슷한 코드를 작성한 다음 COM 런타임이 해당 클래스의 DLL 파일을 가리 키도록하는 것입니다. .

OLE/COM Object Viewer를 살펴 봤는데 구현을 변경하는 옵션이 있지만 제대로 구성하지 못했기 때문에 제대로 구성하는 방법을 모릅니다.

아무도 정보가 충분하지 않은 경우 ("가능하지 않음, 가능하지 않음"이라고 대답 한 경우도 있음) 우수 할 것입니다.

건배, 단.

답변

2

나는 왜 이 완료되면 다시 작성합니까?? 구현을 변경하는 중일뿐 아니라 인터페이스 정의와 coclass GUID는 변경되지 않아야합니다. 이것이 COM 클라이언트가 COM 서버에 대해 알고있는 전부입니다.

인터페이스 정의를 변경하면 새 GUID를 할당해야합니다. 엄청난 DLL 지옥을 사기 때문에 COM에서 매우 어려운 규칙입니다. 예, 전체 재구성이 필요합니다.

1

COM 개체의 구현은 해당 CLSID의 "서버"로 등록 된 DLL에 의해 결정됩니다. 따라서 버그 수정과는 별도로 원본과 동일한 객체를 만들고 등록하십시오.

관련 문제