0
tlbimp.exe를 사용하여 만든 Interop 어셈블리를 참조했습니다. 지금, 나는COM 개체를 만들 때 예외가 발생했습니다.
var allplanInstance = new AllplApplicationClass();
이 내 컴퓨터 및 일부 고객의 컴퓨터에서 작업하는 것처럼이 상호 운용성 어셈블리에서 클래스의 객체를 생성 할 때. 그러나 다른 고객 기계에, 나는 다음과 같은 예외를 얻을 것이다 : 클래스-ID {D8CFBF83-AFC7-11D2-A4F4-0000D1106F9C가} 레지스트리에 등록되어 있다면 체크 한
System.Runtime.InteropServices.COMException (0x80004005):
Creating an instance of the COM component with CLSID {D8CFBF83-AFC7-11D2-A4F4-0000D1106F9C} from the IClassFactory failed due to the following error: 80004005.
을 -이 인 모든 기계의 경우.
이 문제의 원인을 확인하려면 어떻게해야합니까?
힌트를 보내 주셔서 감사합니다.
아마도 프로그램을 운영하는 사용자에게 해당 레지스트리 키에 대한 액세스 권한이없는 것입니까? RegistryKey 클래스를 사용하여 해당 레지스트리 키에 대한 액세스를 선언함으로써 오브젝트 구성을 "보호"할 수 있습니다. 이는 권한 또는 누락 된 주요 문제점을 분리하여 80004005 COM 오류를 진단 할 수 있도록합니다. – PhillipH
이 구성 요소 작성자의 지원이 필요합니다. 그는 의도적으로 새로운 객체를 생성하라는 요청에 실패했지만 아무 것도 의미하지 않는 오류 코드를 사용했습니다. E_FAIL은 오류보고의 품질에 대한 설명 일 뿐이며 이유를 진단하는 것은 쓸모가 없습니다. –
나는 일반적으로 [Process Monitor] (https://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)를 사용하여 오류를 해결합니다. 실패한 WinAPI 호출 만 표시하도록 필터를 구성하고 로그에서 해당 오류 앞에 오는 것을보십시오. – Noseratio