ActiveX 권한2

Program Visual C++ 2012. 4. 18. 10:21 Posted by HisPark

사내에서 Vista 지원때문에 새로 입사자를 통해 Vista지원여부와 방법들의 확인을 요

청하여 결과물로 나온 1차본이다.

여러가지 자료들도 잘 정리되어 있고 많은 정보를 링크하여 놓은 좋은 정보이다.

1. Windows Vista 표준사용자의 File Save & Open

(0) Administrator 계정으로 로그인해도 프로그램은 표준 사용자 권한으로 실행됩니다.

(1) CFileDialog를 이용해서 파일을 Save, Open 하는 프로그램을 만들어서 파일을 생성해

보았습니다.

C:\ => Root Directory에서는 경고 메시지가 나타납니다.

(Root 대신 \My Documents에 저장할 것인지를 묻습니다.)

C:\TEMP\ => 이와 같이 '쓰기 권한'이 사용자에게 부여된 폴더에는 자유롭게 저장이

가능합니다.

C:\Program Files\ => '읽기/실행 권한' 이 주어져 있습니다. 파일을 쓰는 시도를 하면

에러 없이 파일을 자유롭게 쓸 수 있는 것처럼 보이지만, 실제로 이 폴더에 쓰는 것이

아니라 C:\Users\<사용자 이름>\AppData\Local\VirtualStore\Program Files\

이 곳에 따로 저장이 됩니다. 작업 시 사용자가 C:\Program Files\ 에 저장을 지시하

면, 성공적으로 파일이 저장된 것처럼 보이지만, 물리적으로는

C:\Users\...\VirtualStore\Program Files\ 에 파일이 저장됩니다.

(그러므로 C:\Program Files\ 에 찾아가보면 파일이 없습니다.)

C:\Windows\ => \Program Files\ 폴더와 동일하게 작동합니다.

C:\Users\<사용자 이름>\AppData\Local\VirualStore\Windows\ 로 Redirection

시킵니다.

이렇게 Vista에서 자체 Redirection 시키는 디렉토리는 C:\Windows\ 와 C:\Program

Files\ 두 Folder만이 확인 되었습니다. C:\Users\...\VirtualStore\ 의 하위 Folder가

\Windows\ 와 \Program Files\ 밖에 없기 때문에, 현재로서는 이 두 Folder가 전부인

듯 합니다.

(2) 역시 CFileDialog를 이용해서 C:\Windows\ 와 C:\Program Files의 파일을 읽어보면,

먼저 C:\Users\...\VirtualStore\Windows\ 와 C:\Users\...\VirtualStore\

Program Files\ 에 그 파일이 있는지를 확인해 본 후, 있으면 그 VirtualStore에 있는 파

일을 읽어오고, 없으면 C:\Windows\ 와 C:\Program Files\ 에 그 파일이 있는지 확

인해서 읽어옵니다. 두 폴더에 같은 이름의 파일이 모두 존재할 때, 어떤 파일이 열릴 것인

가에 대한 정리입니다.

\VirtualStore\Program Files\ C:\Program Files\ 어느 쪽의 파일이 열리는가?

X X 파일 없음
X O C:\Program Files\
O X \VirtualStore\Program Files\
O O \VirtualStore\Program Files\
즉, 항상 VirtualStore가 우선적으로 검토되고, 만일 적절한 파일을 발견하지 못한 경우에

한해서만, 물리적인 저장 위치인 C:\Program Files를 access한다고 정리하시면 됩니다.

(3) 김명신의 즐거운 하루 블로그에서 잘 정리된 정보를 얻을 수 있습니다.

- Vista Note #1. 환경설정 파일 저장, http://himskim.egloos.com/1471216

- Vista Note #2. Virtualization, http://himskim.egloos.com/1473911

(4) Registry에 대한 저장은 아직 직접 실행해보지 않았습니다.

위에 소개된 블로그에 나타나있는 텍스트를 그대로 붙여넣기 합니다.

Registry의 경우는 어떨까요? 핵심적인 메커니즘은 파일과 유사합니다. Registry

Virtualization은 HKEY_LOCAL_MACHINE\Software 이하만을 가상화 합니다. 즉

HKEY_LOCAL_MACHINE\Software\AppKey1 에 접근을 시도하면 실제로는

HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\AppKey1

에 접근하게 됩니다.

Registry Virtualization에 대한 보다 자세한 내용은 Registry Virtualization 를 참고하십시

오.

마지막으로 이러한 virtualization 기능은 다음 version의 windows 출시나 혹은 그 이전

에라도 제거될 수 있다는 것입니다. 실제로 64bit Vista에서는 이러한 virtualization 기

능이 전혀 동작하지 않습니다. 따라서 virtualization 기능에 대해서 전혀 기억하지 못하

더라도 다음 한가지만은 기억해야 합니다.

Program Files나 windows 혹은 windows/system 폴더 그리고

HKEY_LOCAL_MACHINE\Software 등에는 파일 혹은 정보를 수정,삭제,저장할 수 없으

므로 프로그램을 수정해서 다른 위치에 이러한 정보를 저장하도록 고쳐야 한다는 것입니

다.
(5) '관리자 권한으로 실행' 하면 물리적으로 C:\Program Files\ 혹은 C:\Windows\ 에도

파일을 저장할 수 있습니다.

(관리자 권한으로 C:\Users\...\VirtualStore\Program Files\ 에 저장하려면, 직접

찾아가야 됩니다!)

(6) 프로그램을 Install 하거나 Uninstall 할 때는 VirtualStore 저장하지 않고,

C:\Program Files\ 에 접근할 수 있도록 권한을 줍니다.

이에 대한 편의를 위해 Microsoft에서는 'MSI(Microsoft Windows Installer) 3.1 및 4.0을

사용하는 것' 을 권장하고 있습니다.

p.s. 파일명에 Setup이나 Install이 있으면 Vista에서 자동으로 권한을 상승시켜 준다고

합니다.

이전에 쓰던 프로그램들을 모두 재패키징해서 재배포해야 하는 수고를 덜어주기 위해

MS에서 지원하는 레거시 지원이라고 합니다.

http://aromi.tistory.com/29 에서 관련된 내용을 찾아보실 수 있습니다.

(7) http://www.microsoft.com/korea/windows/ie/ie7/technology/default.mspx 에서

Microsoft가 제공하는 GuideLine을 다운 받을 수 있습니다.

최소권한부여 환경에서 어플리케이션 개발자를 위한 모범사례 및 지침(Word 문서, 720KB)

2. Windows Vista 표준사용자의 ActiveX

(1) 위의 File Write 하는 프로그램을 ActiveX로 바꾸어서 같은 방법으로 실행을 하였습니다.

Local Resource로 실행 시, 보호모드로 작동하지 않기 때문에 IIS server를 열어서 접속

하는 방법으로 테스트를 진행하였습니다.

(2) Regsvr32 으로 등록 해줄 때, '관리자 권한' 이 필요합니다.

cmd.exe 를 '관리자 권한으로 실행' 하거나, 아예 regsvr32.exe 의 실행 권한을 바꾸어 버

리는 수가 있습니다.

(Administrator가 아닌 사용자가 '관리자 권한으로 실행' 을 시도하면 관리자 권한이 있는

계정의 비밀번호를 묻습니다.)

(3) Regsvr32 등록이 잘 이루어졌다면 VC6 에서 작성한 ocx가 보호모드에서 정상적으로 작

동합니다. 앞서 진행한 것과 동일한 테스트를 진행하였고, File Save & Open은 (기대한

바와 같이) 위와 동일한 결과가 나타납니다.

IE7.0을 '관리자 권한으로 실행' 하면 IE7.0 내의 ActiveX 프로그램에서도 VirtualStore 말

고, C:\Windows\ 와 C:\Program Files\ 에 저장할 수 있습니다.

(4) SNAIPER의 조그마한 블로그 에 가보시면 Windows Vista 를 위한 ActiveX 마이그레이션

작업 절차 정리 문서 1 (http://snaiper.tistory.com/206)

문서를 참고하시면 VC6 에서 작성된 ActiveX를 Vista용으로 Migration 하는 경험담이 잘

정리되어 있습니다. (PDF 파일이 Adobe Reader 구버젼에서는 열리지 않는 듯 합니다.)

(5) 기타 ActiveX 에 관해 참고할만한 게시물들을 링크시켜 두겠습니다.

MS Windows Vista와 ActiveX에 대한 오해 http://aromi.tistory.com/29

(위에서 이미 링크한 그 블로그 입니다.)

Vista 와 ActiveX 그리고 보안

- (1) http://blog.naver.com/p4ssion/50013835648

(사실 이 글보다는 이 다음 글에 원하는 내용이 들어 있을 것 같습니다.)

비스타에서 강제로 액티브X 설치

- http://itviewpoint.com/tt/index.php?pl=2445

비스타와 보안 (Vista & ActiveX) 관련하여

- http://blog.naver.com/simonsayz?Redirect=Log&logNo=120034059886

Vista에서 ActiveX 사용 팁 한가지

- http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?mode=read&num=4136&page=2&db=dmdlec3&backdepth=3

이어지는 답글 Code Sign 생략하기

- http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?backdepth=1&db=dmdlec3&mode=read&num=4139

(6) http://www.microsoft.com/korea/windows/ie/ie7/technology/default.mspx 에서

Microsoft가 제공하는 GuideLine을 다운 받을 수 있습니다.

Internet Explorer 7 보호 모드의 이해 및 작업 (Word 문서, 366KB)

Internet Explorer 7 기술 개요 읽기 (Word 문서, 2.09MB)

(Internet Explorer 7에서는 웹 및 응용 프로그램 개발자를 위해 최종 사용자 환경, 보안,

개인 정보 보호, 플랫폼이 대폭적으로 향상되었습니다. 이 놀라운 새 버전의 기능에 대해

알아보려면 이 문서를 읽어보십시오.)

Internet Explorer 7.0 호환성 백서 (Word 문서, 1.92MB)

(이 문서에서는, 변화된 IE 7.0으로 인해 발생할 수 있는 전형적인 문제 및 현재 다양한 사

이트에서 보고되는 사례들을 알아보고 그에 대한 대처 방법을 소개합니다.)

위의 자료를 보면 Vista의 권한에 대한 대처 방안을 미약하게나마 생각할 수 있을 거 같다.

[출처] Windows Vista - VirtualStore, ActiveX (1차)|작성자 자유인