ActiveX 제작시 Windows Vista, Windows 7 에서 정상동작을 위해 신경써야 할 정보를 모아둡니다.

UAC Elevation
ActiveX에서 파일 쓰기 등의 작업을 한다면 권한 상승이 필요하며 권한 상승을 위한 코드는 아래 링크 참조.
ATL ActiveX 만들기 - Part4. 관리자권한 UAC Elevation

[참고] 포럼에서 해당 문제에 대해 논의된 글
Win7에서의 ActiveX 작동 문제


64bit OS에서 동작하는 ActiveX의 고려 사항
현재 보통은 기존에 32bit로 ActiveX가 제작되어 있는 상태에서 64bit OS에 동작하게 하려면
Internet Explorer 32bit 버전에서 실행시키면 된다.

이때 레지스트리에 등록되는 CLSID는
64bit의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
32bit의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID

ActiveX dll 파일이 기존에 C:\windows\system32 에 설치되도록 했다면
64bit Windows의 경우 C:\windows\sysWOW64 에 설치된다.
그런데 UAC가 켜져있는 기본 설정에서는 ActiveX가 설치는 되는데 dll 이 등록안되는 현상이 발생한다.
직접 C:\windows\sysWOW64에 가서 "regsvr32 XXX.dll" 을 실행하면 되긴 한다.

이 문제에 대해 64비트 OS(Vista)에서 LocalizedString 버그 에 잘 나와있다.
workaround도 제시해 주고 있다. 64비트 OS 비스타 LocalizedString 버그 꽁수
(Windows 7도 똑같은 걸로 봐선 MS도 ActiveX를 버리는 건가?)

이 문제로 인해 윈도우 포럼에서도 헤매고 있다. Problem of ActiveX(x86) in Vista 64-bit

ActiveX 설치를 system32 나 sysWOW64 말고 다른 곳에 설치되도록 한다면 상관 없다.
 

UAC On/Off 배치 파일
테스트시 UAC 기능 On/Off를 편리하게 하기 위한 배치 파일



ActiveX는 쓰지 않는것이 좋다.
사용자에게 실행파일을 다운받게 한 후 실행시키게 하는 방법이 선호대상으로 바뀌었음을 받아들여야한다.
안그러면 이런거로 시간 다 보내니 뒤쳐지는게 당연하다.




'C++' 카테고리의 다른 글

std::find_if  (0) 2011.10.21
boost 설치  (0) 2011.08.17
64bit programming 고려 사항  (0) 2011.06.10
Dependency 관련  (0) 2011.06.10
RapidXml  (0) 2011.06.05
MFC UI 꾸미기  (0) 2011.06.01
VisualC++ 과 C++0x  (0) 2011.05.30
Regular Expression (정규 표현식)  (0) 2011.05.22