.NET COM Callable Wrapper DLL의 등록 / 사용 문제를 해결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/9623307

  •  09-12-2019
  •  | 
  •  

문제

C # .NET COM Callable Wrapper DLL을 작성했습니다. 나는 그것을 강력한 이름으로 서명했고, 64 비트 regasm.exe를 가진 코드베이스와 TypeLib를 등록했다. 등록 및 모든 컨트롤의 메소드는 64 비트 올리브 뷰어와 함께 표시됩니다. 그러나 64 bit \ windows \ system32 \ cscript.exe에서 컨트롤을 사용하려고 할 때 :

  Set logger = CreateObject("MyCompany.LoggerControl")
.

오류가 발생합니다.

Microsoft VBScript 런타임 오류 : ActiveX 구성 요소는 객체를 만들 수 없습니다 : 'mycompany.loggerControl'

Sysutils에서 ProCMON을 사용하여 추적하여 찾을 수 있습니다 :

1 : 41 : 44.8295486. cscript.exe 24028 regopenkey hkcr \ mycompany.loggercontrol

이름을 찾을 수 없음 원하는 액세스 : 읽기

그러나이 키는 regedit에 있습니다. 호출 프로세스는 상승 된 명령 프롬프트에서 실행 중입니다. 보안 문제가있는 경우 '이름을 찾을 수 없음'대신 오류가 '액세스가 거부'되지 않아야합니까?

이 유형의 COM 제어 등록 오류를 추적하는 다른 도구는 무엇입니까?

도움이 되었습니까?

해결책

여기에는 몇 가지 문제 해결 아이디어가 있습니다.

  1. 객체를 만들려고 할 때 반환되는 정확한 오류 번호를 확인합니다.

    오류가 다시 시작됩니다 로거= createObject 설정 ( "mycompany.loggerControl")
    ERRER IF ERRE. wscript.echo "오류 #"& err.number. wscript.echo err.description. wscript.quit 1.

  2. 이 오류 코드를 찾으십시오. 예를 들어, "액세스가 거부되었거나 다른 오류가 있습니까?

  3. C # 실행 파일을 만들고 객체를 호출하고 성공적으로 생성 할 수 있는지 확인하십시오.

  4. DLL에서 스크립트 실행 디렉토리에로드되는 것을 방지하는 다른 종속성이 없는지 확인하십시오. DISEDS.EXE를 사용하여 스크립트를 실행중인 디렉토리에서 또는 LEGSVR32의 가장 좋아하는 가난한 사람 기술을 사용하여 DLL을 시도하고로드 할 수 있습니다. 종속성으로 인해 DLL을로드하지 못하면 다른 DLL을 찾을 수 없거나 종속성 중 하나를로드 할 수없는 오류 대화 상자가 나타납니다. DLL을로드 할 수있는 경우 확인을 성공적으로 등록 할 수 있습니다.

    c : \ pathotovbs> regsvr32 c : \ pathoyourdll \ yourdll.dll

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top