본문 바로가기
개발

사용자 권한 ActiveX 컨트롤 설치

by 솜씨제이 2008. 3. 14.

사용자 권한 ActiveX 컨트롤 설치(Non-admin ActiveX control installation)

IE8부터 Windows Vista에서 관리자 권한이 없는 사용자가 UAC 프롬프트 없이 ActiveX 설치가 가능하도록 변경되었다. 이 기능을 사용하려면 ActiveX 컨트롤 자체를 변경하지 않고 기존 ActiveX 컨트롤을 약간 변경된 방법으로 패키징해주기만 하면 된다. 사용자 권한으로 설치가 되기 때문에 전체 시스템에는 영향을 미치지 않으면서 필요한 ActiveX 컨트롤의 기능을 사용할 수 있다는 장점이 있다. 관리자 권한이 있는 사용자는 현재 사용자 환경에만 설치할 것인지 전체 사용자 환경(관리자 권한)에 설치할 것인지 선택할 수도 있다. 이 기능은 당연히 Windows Vista에서만 사용할 수 있다.
이 기능을 사용하려면 설치에 사용하는 inf 파일에 아래의 설정값을 추가해주면 된다.

[Deployment] 섹션

  • RegistrationScope

machine
(기본값)전체 사용자 환경에 설치한다.
user
현재 사용자 환경에만 설치한다.
machine|user
machine과 user 모두 지원하는 경우

[Deployment]
InstallScope=user

DLL 파일 섹션

  • RedirectToHKCU

no
(기본값)레지스트리 리다이렉션을 사용하지 않는다.
yes
DllRegisterServer와 DllUnregisterServer를 호출할 때 HKEY_CLASSES_ROOT와 HKEY_LOCAL_MACHINE의 미리 정의된 키를 사용자 환경에 맞추어 변환해준다. 단, inproc-server DLL만 지원하고 HKLM\Software\회사명의 경로에 쓰기는 지원하지 않는다.

[contoso.dll]
file-win32-x86=thiscab
clsid={ABC01234-BA7A-101A-B57A-0000C0C3EFF0}
FileVersion=4,20,0,6164
RegisterServer=yes
RedirectToHKCU=yes

AXIS(ActiveX control Installer Service)를 사용하는 경우 AXIS가 시스템 권한에서 동작하기 때문에 연관된 사용자 환경이 없다. 따라서 ActiveX 컨트롤은 항상 전체 사용자 환경에 설치되어야 한다.

ActiveX 컨트롤이 다양한 권한으로 설치될 수 있기 때문에 Urlmon.dll에 현재 설치하려는 환경을 체크하기 위해서 다음 API가 추가되었다.

HRESULT IEInstallScope(LPDWORD pwdScope);

참고 Non-Admin ActiveX Controls

댓글