2010-02-10 3 views
2

내가 VB6 DLL을 업데이트하고 .NET 서비스를 재배치하기 위해 노력하고있어를 업데이트 한 후 .NET 서비스를 배포,하지만 난 다음 오류 받고 있어요 :은 COM DLL을

System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {D01BF589-BC04-4119-8168-AE6180BBD021} failed due to the following error: 80040154.

난 단계를

  1. 컴파일 VB6 COM DLL
  2. interop에 DLL
  3. ,691,363을 만들 tblimp 대상 시스템
  4. 사용에 COM DLL을 등록을 다음과 같이 배포 복용 (210)
  5. 는 .NET 프로젝트
  6. 다시 컴파일 프로젝트 및 설치
  7. 실행 (이전에 서비스가 설치되어 있지 않은) 대상 시스템에 설치

어떤 아이디어이 Interop를 DLL을 추가 하시겠습니까?

답변

0

대상 컴퓨터에 VB 런타임이 설치되어 있고 보조 지원 파일이 있습니까? dll에서 regsrvr32를 실행 했습니까? TypeLib가 대상 컴퓨터의 레지스트리에 있는지 확인 했습니까?

호프가 도움이 되었으면 안녕하세요, 탐.

+0

레지스트리를 검색 한 결과 다른 위치에 두 번 등록 된 DLL을 발견했습니다. TypeLib 아래에 등록 된 DLL이 오래된 것입니다. 두 DLL의 등록을 모두 제거한 다음 올바른 DLL을 등록했습니다. 이제 작동 중입니다. 감사! – marekc

0

대상 컴퓨터에서 COM 개체가 필요로하는 다른 dll이 누락되었을 수 있습니다. sysinternals의 'listdlls'및 'procexp'는 누락 된 항목을 식별하는 데 도움이 될 수 있습니다. 또한. NET은 64 비트 애플 리케이션으로 실행되도록 강제 할 수 있습니다./32 비트 + 스위치로 corflags를 실행하면 도움이 될 수 있습니다.

1

오류 코드 0x80040154는 "등록되지 않은 클래스"를 의미하는 REGDB_E_CLASSNOTREG로 변환되므로 클래스가 등록되지 않았다고 추측합니다. HKEY_LOCAL_MACHINE \ CLSID 아래의 레지스트리를보고 등록이 실패하지 않았는지, 실제로 dll을 가리키는 지 확인하십시오.

관련 문제