none
ActiveX 와 Windows 8 의 32bit, 64bit 정책 여부 RRS feed

  • 질문

  • 안녕하세요.

    현재 32bit에서 ActiveX를 개발하여 IE에서 사용중인데, Windows 8 의 64bit를 지원하기 위해 64bit 으로 개발중에 있습니다.

    Windows 8 의 IE 가 차후, 64bit 전용으로 정책이 바뀐다는 소식을 들었습니다.

    사실이라면 정책이 시행되는 일자를 알 수 있는지 궁금합니다.

    그리고,

    데스크톱 IE의 향상된 보호 모드

    http://msdn.microsoft.com/ko-kr/library/ie/dn265025(v=vs.85).aspx

    위 문서에서 IE는 ActiveX를 사용할때 AppContainer 호환 가능으로 등록된 확장 기반만 자동으로 로드된다는 부분이 있습니다.

    호환 가능으로 등록하는 방법이 어떤것인지 궁금합니다.


    • 편집됨 SeongHun Choe 2014년 1월 10일 금요일 오전 8:19
    2014년 1월 2일 목요일 오전 6:30

답변

  • 안녕하세요,

    개발하시는 컴포넌트를 CAT_ID AppContainerCompatible 카테고리에 register 하셔야 합니다. 상세한 구현 방법은 다음 링크를 참조하시기 바랍니다:

    http://msdn.microsoft.com/en-us/library/ie/dn519894(v=vs.85).aspx

    • 답변으로 표시됨 SeongHun Choe 2014년 1월 13일 월요일 오전 1:45
    2014년 1월 3일 금요일 오전 6:12
  • DEFINE_GUID를 F12키를 눌러서 resolve 해 보시면 단순히 GUID 구조체에 guid 값을 채워서 선언하는 역할만을 하는 것을 보실 수 있습니다. 즉, DEFINE_GUID는 단순히 GUID 값을 다루기 쉬운 인터페이스 이름으로 재정의하는 것이고 실제 어떤 연산을 하는 것은 아닙니다.

    EPM 호환모드로 동작하기 위해서는 AppContainer 카테고리에 등록이 되어 있어야 하고, 그러기 위해서는 실제로 레지스트리키에 등록이 되어야 합니다. 이 작업을 위해서 .rgs에 명시를 하거나, ATL이라면 IMPLEMENTED_CATEGORY(CATID_AppContainerCompatible)  매크로를 사용하여 실제로 카테고리에 추가되도록 지정을 해야만 합니다.  (직접 수동으로 레지스트리키에 등록하는 것은 실제 제품 배포시에 불가능한 시나리오이므로)

    감사합니다.

    • 답변으로 표시됨 SeongHun Choe 2014년 1월 13일 월요일 오전 1:45
    2014년 1월 10일 금요일 오후 1:36

모든 응답

  • 안녕하세요,

    개발하시는 컴포넌트를 CAT_ID AppContainerCompatible 카테고리에 register 하셔야 합니다. 상세한 구현 방법은 다음 링크를 참조하시기 바랍니다:

    http://msdn.microsoft.com/en-us/library/ie/dn519894(v=vs.85).aspx

    • 답변으로 표시됨 SeongHun Choe 2014년 1월 13일 월요일 오전 1:45
    2014년 1월 3일 금요일 오전 6:12
  • 감사합니다. 

    64bit ActiveX로 생성하여 호환가능으로 사용하는데에는 성공하였습니다.

    DEFINE_GUID(CATID_AppContainerCompatible, 0x59fb2056,0xd625,0x48d0,0xa9,0x44,0x1a,0x85,0xb5,0xab,0x26,0x40);

    이것을 선언한것과 

    직접 레지스트리의 해당 activex의 Implemented categories 에 추가하는것과 어떤 차이가 있는지 아시나요? ^^;

    레지스트리에 추가하였더니 위 선언은 하지 않아도 되었습니다.

    감사합니다.

    2014년 1월 10일 금요일 오전 8:24
  • DEFINE_GUID를 F12키를 눌러서 resolve 해 보시면 단순히 GUID 구조체에 guid 값을 채워서 선언하는 역할만을 하는 것을 보실 수 있습니다. 즉, DEFINE_GUID는 단순히 GUID 값을 다루기 쉬운 인터페이스 이름으로 재정의하는 것이고 실제 어떤 연산을 하는 것은 아닙니다.

    EPM 호환모드로 동작하기 위해서는 AppContainer 카테고리에 등록이 되어 있어야 하고, 그러기 위해서는 실제로 레지스트리키에 등록이 되어야 합니다. 이 작업을 위해서 .rgs에 명시를 하거나, ATL이라면 IMPLEMENTED_CATEGORY(CATID_AppContainerCompatible)  매크로를 사용하여 실제로 카테고리에 추가되도록 지정을 해야만 합니다.  (직접 수동으로 레지스트리키에 등록하는 것은 실제 제품 배포시에 불가능한 시나리오이므로)

    감사합니다.

    • 답변으로 표시됨 SeongHun Choe 2014년 1월 13일 월요일 오전 1:45
    2014년 1월 10일 금요일 오후 1:36
  • 답변 감사드립니다. ^^
    2014년 1월 13일 월요일 오전 1:45