Jul 25 2008

Vista 호환 어플리케이션 개발 - Virtualization

분류: Dev.Info 태그: ,, , Heart @ 2:40 오후

Trackback : http://dev.heartsavior.net/archives/153/trackback/

@ 윈도우 비스타 UAC(사용자 계정 콘트롤) 이야기

솔루션을 비스타에서 테스트하고 있는데, 역시나 강화된 보안 때문에 몇몇 부분이 비정상적으로 작동한다.

Vista + IE7 프로텍션 모드는 워낙 뭐 얘기가 많아서 그러려니 했는데(프로텍션 모드 끈 상태로 테스트했다…-_- 프로텍션 모드 지원은 나중에…), 일반 어플들 또한 몇몇 기능이 제대로 돌아가지 않았다.

이상하게 파일 I/O 관련해서만 문제가 생겨서, 자료 검색 좀 해 봤더니 위와 같은 정보를 얻을 수 있었다.
특히 Vista의 ‘가상화’ 기술에 대한 쉬운 설명이 있어서 궁금한 점을 해결하는 데 아주 도움이 많이 되었다.

가상화(Virtualization) 기술은, 기존 프로그램과 Vista 의 호환을 위한 기술로, 시스템 폴더나 HKLM 레지스트리에 기록 및 읽기를 수행하는 요청을 내부적으로 다른 위치로 리다이렉트시켜서 기존 프로그램도 정상적으로 돌아가면서 Vista OS 의 보안도 수행하는 기술이다.

변경되는 위치는,

파일 : %user’s profile%\AppData\local\virtualstore\ 아래에 폴더 구조 그대로…
(예: Program Files\…)

레지스트리 : HKCU\software\classes\virtualstore\
(이건 테스트를 안해봐서 구조 그대로 내려가는지는 모르겠음)

테스트중인 어플이 문제가 생겼던 부분도 여기에 있었는데, 이 어플은 임시 디렉토리를 사용할 때 어플의 위치\Temp 디렉토리를 사용했다. 인스톨해서 쓰는 프로그램이니 그 위치가 Program Files 의 하위 디렉토리(즉, 시스템 디렉토리) 가 되었던 것이다. 가상화 덕분에 실제 파일 I/O 는 리다이렉트된 위치에서 정상적으로 수행은 됐는데, 해당 디렉토리를 자동으로 띄워 주는 부분이 수행이 제대로 안 되었던 것으로 결론을 내렸다.
(가상화 디렉토리 내에 파일이 저장된 것은 확인했다.)

가상화라는 기술로 기존 어플을 지원해주고 있긴 하지만, 어디까지나 레거시 어플을 위한 부분이고, 새로 프로그래밍 할 때는 시스템 폴더나 HKLM 레지스트리는 안쓸 수 있으면 안쓰는 부분으로 프로그래밍해야 될 것 같다.

ps.
그나저나 프로텍션 모드… Vista + IE7 이 이정도인데 IE8이 출시된다면…
그냥 앞으로 ActiveX를 개발할 일이 없었으면 좋겠다…-_-;;