2009-07-09 2 views
5

저는 ASP에서 주로 사용하는 32 비트 COM 구성 요소가 있으며 64 비트 버전도 있습니다.내 32 비트 및 64 비트 COM 구성 요소가 동일한 컴퓨터에 함께있을 수 있습니까?

64 비트 버전은 기능적으로 동일하며 동일한 ProgID를 사용합니다 (동일한 CLSID 등을 알고있는 한).

32 비트 버전 (분명히 다른 폴더에 있음)과 동일한 컴퓨터에 64 비트 버전을/regsvr 설치하고 기존 64 비트 응용 프로그램을 32 비트 구성 요소로 계속 사용할 수 있습니까? 64 비트 버전?

이들은 .NET이 아닌 C++로 작성된 원시 코드 구성 요소입니다.

답변

7

가능해야합니다.

64 비트 창에서 registryfile system은 32 비트 응용 프로그램 용으로 리디렉션됩니다. 32 비트 COM dll에 대한 등록은 레지스트리 (HKLM \ Software \ Wow6432Node \ Classes)의 별도 위치에 있으며 COM 구성 요소는 프로그램 파일 아래에 64 비트, 프로그램 파일 아래에 32 비트 별도의 폴더에 있어야합니다 (x86). 32 비트 앱의 레지스트리/파일 리디렉션은이 작업을 투명하게 만들어야합니다.

예를 들어 32 비트와 64 비트 버전간에 충돌하는 글로벌 리소스를 만드는 경우와 같이 구성 요소 자체가이를 방지 할 수 있습니다.

이 상황은 이미 64 비트 Windows에서 발생합니다. 내 64 비트 시스템에서 내가 가진 :

HKEY_LOCAL_MACHINE \ 소프트웨어 \ Wow6432Node \ 클래스 \ CLSID {8856F961-340A-11D0-A96B-00C04FD705A2} \있는 InprocServer32 \ 기본값 = C : \ WINDOWS \ SysWOW64와 \

ieframe.dll

그리고

HKEY_CLASSES_ROOT의 \의 CLSID {8856F961-340A-11D0-A96B-00C04FD705A2} \있는 InprocServer32 \ 기본값 = C : \ WINDOWS \ SYSTEM32 \

ieframe.dll 웹 브라우저의

32 비트 및 64 비트 버전 동일한 시스템에서 제어

+0

그게 내가 원하는 일일 수도 있겠지만, 리드는 그렇지 않다는 생각이 듭니다. 64 비트 테스트 환경에 대한 액세스 권한이 없기 때문에 지금 시도 할 수 없습니다. 문제가 발생하면 난잡해질 수 있습니다. – Kev

+0

@Kev : 이것은 내 실수였습니다. 마이클이 맞습니다. –

+0

방금 ​​테스트 할 수있는 컴퓨터를 찾았습니다. 모두 잘 작동합니다. :) – Kev

관련 문제