2010-02-17 5 views
11

레지스트리에서 사용자 정의 컨텍스트 메뉴 항목을 추가 및 제거하는 작은 응용 프로그램을 만들고 싶습니다. 이렇게하려면, 어떻게 든 새로운 DLL을 작성하기 전에 존재하는 경우 이전 항목을 백업 할 수 있도록 임의의 DLL의 CLSID를 가져와야합니다.DLL 파일의 CLSID 가져 오기?

regsrv32 어떻게 든이 마법의 숫자를 만들었지 만, 그 숫자를 직접 구할 방법이 없었습니다.

내가 이것보다 더 나은 무언가가 희망 : DLL 이름에 대한

  1. 스캔 레지스트리
  2. 발견되지 않는 경우는, 다시 스캔을 등록하고 다시

하면 등록 취소 DLL의 이름이 바뀌 었습니다. 문제가 발생할 가능성이 있습니다.

답변

4

REGKIND_NONE을 지정하는 DLL에서 LoadTypeLibEx을 호출 한 다음 ITypeLib 인터페이스를 통해 사용할 수있는 TypeLibInfo 정보를 다시 확인할 수 있습니다.

MSDN에는 이런 종류의 정보가 있습니다. 이전 VB6 중심 링크이지만 COM 구성 요소 검사 방법에 대한 유용한 정보가 있습니다.

2

RegOverridePredefKey()을 사용하여 regsvr32가 레지스트리에 수행하는 작업을 가로 채고 RegOverridePredefKey()를 호출 한 다음 regsvr32를 재현하여 COM 서버를 LoadLibrary()하고 DllRegisterServer()를 호출 한 다음 수행 된 변경 사항을 검사 할 수 있습니다. RegOverridePredefKey()를 사용하면 변경 사항을 격리하고 영구적으로 변경하지 않습니다.

관련 문제