1
Windows Vista 호환성 문제 및 IE7의 호환성 문제에 대한 해결방법

Q. 웹 페이지 상의 텍스트 에디터가 정상 로딩이 되지 않고 X 모양으로 표시되는 현상
A.원인: Windows Vista에서는 DHTMLD.OCX를 운영체제에서 지원하지 않고 있으므로 해당 에디터 콘트롤을 사용하는 페이지에 접근을 할 경우 콘트롤이 로딩이 되지 않게 됨.
→ 해결방안: DHTMLD.ocx를 사용하지 않는 대체 에디터 콘트롤로 교체하거나 MSHTML editing control의 기능을 재 구현하여 대체해야 함

Q. ActiveX가 레지스트리 및 시스템 영역에 쓰기 작업을 할 경우 결과는 성공으로 나오지만 실제로 해당 경로에 쓰기를 했던 정보가 남아 있지 않는 현상 발생
A.원인: Windows Vista의 Virtualization 기능으로 인해 발생하는 것으로 UAC에 의해 표준사용자의 권한으로 시스템영역에 쓰기 작업을 시도할 경우 자동으로 쓰기가 가능한 가상화 영역으로 해당 동작이 redirection 되는 현상
→ 해결방안: 가급적 모든 쓰기 작업은 쓰기가 가능한 영역으로 동작을 하도록 프로그램 수정이 필요하며 꼭 시스템 영역에 써야 하는 데이터는 관리자 권한으로 상승할 수 있도록 프로그램 수정 필요.

Q. Regsvr32 프로그램을 이용해 특정 ocx를 registry에 등록하는 작업이 실패하는 현상
A.원인: Windows Vista의 UAC(사용자 계정 컨트롤) 기능으로 인해 발생하는 현상으로 표준 사용자의 권한으로는 Registry에 접근하여 쓰는 작업이 HKLM, HKCR에 대해서 제한이 됨.
→ 해결방안: 해당 작업 시 표준 사용자 권한에서 관리자 권한으로 상승을 하도록 프로그램 수정 필요. (App manifest marking, COM Elevation Moniker를 이용한 DLL surrogate)

Q. 일반 프로그램이 구동이 될 때 표준 사용자 권한으로 수행이 된다면 해당 권한으로 쓰기가 가능한 영역은 어디인지?
A.→ 답변: 표준 사용자 권한으로는 C:\Users(사용자)\Public 하위와 C:\Users(사용자)\로그인계정 하위, registry의 경우에는 HKCU 경로 하위에 쓰기가 가능함

Q. 인터넷 영역에 해당하는 URL에서 주소 창에 신뢰할 수 있는 사이트 영역에 해당하는 URL을 입력하는 경우 페이지가 새 창으로 열리는 현상 발생
A.원인: IE7의 보호모드로 인해 발생하는 문제로서 기본적으로 인터넷 영역과 인트라넷 영역에 대해서는 보호모드가 켜진 상태로 IE가 구동을 하고 신뢰할 수 있는 사이트에 대해서는 보호모드가 꺼진 상태로 구동을 하므로 보호모드를 끄고, 켜는 동작이 발생할 경우 새 창으로 뜨는 현상이 발생.
→ 해결방안: 두 영역의 URL을 하나의 영역으로 이동할 수 있도록 코드 변경을 하거나 새 창으로 뜨는 현상에 대한 사용자 안내가 필요.

Q. CreateProcess를 이용하여 manifest marking 처리된 exe 파일 실행 시 권한 상승이 되지 않는 현상 발생
A.원인: Manifest Marking 처리된 exe 바이너리 파일은 ShellExecute로 실행해야 함.
→ 해결방안: shellexecute로 새로운 프로세스를 생성하도록 프로그램 수정 필요.

Q. ActiveX 로딩 시 프로그램의 버전을 확인하여 구 버전일 경우 서버로부터 새로운 파일을 받아오는데 로컬 PC에 복사하는 작업이 실패하는 현상 발생
A.원인: Windows Vsita의 UAC와 IE7의 보호모드 환경 하에서는 가장 낮은 권한으로 동작을 하므로 로컬 PC의 시스템 영역에 업데이트 파일을 복사하는 작업이 실패함
→ 해결방안: ActiveX내의 버전 업데이트 파일이 exe일 경우 manifest marking을, dll일 경우 COM elevation moniker를 이용하여 dll surrogate를 시킴으로써 관리자 권한을 얻을 수 있으므로 프로그램을 수정해야 함.

Q. Windows Service에 등록되어 구동 중인 프로세스가 UI를 가진 경우 사용자 세션에 표시하지 못하는 현상 발생
A.원인: Windows Vista에서는 Service 세션과 사용자 로그인 세션을 분리하였기 때문에 서비스 세션인 0번에서 UI를 가진 메시지나 대화상자를 표시할 경우 사용자의 로그인 세션에 보내주지 못하고 차단이 됨. RPC 통신을 이용한 프로세스 간의 통신이 모두 차단됨
→ 해결방안: 임시적으로 호환성 유지를 위해 서비스 세션 0번에서 해당 메시지나 대화상자가 발생할 때 사용자 로그인 세션에 알림 메시지를 표시하여 주고, 해당 메시지에서 잠시 세션 0번으로 이동을 하여 확인을 할 수 있으나 사용자의 번거로움을 유발하므로 가급적 세션 0번의 Windows Service와 로그인 사용자 세션간의 통신이 필요할 경우 IPC 통신 기법을 사용하도록 프로그램 수정이 필요.

Q. Windows Vista의 네트워크 환경에서 Windows XP PC의 목록이 보이지 않는 현상 발생
A.원인: Windows XP에서 LLTP 수집 요청에 응답을 하지 못하므로 LLTP 를 설치해야 함.
→ 해결방안: LLTP 설치 파일을 다운로드하여 Windows XP PC에 설치해야 함.

Q. 프로그램을 구동할 경우 프로그램이 수행되는 권한이 관리자 권한인지 표준 사용자 권한인지 확인하는 방법
A.→ 방법: IsUserAnAdmin() 함수나 GetTokenInformation() 함수를 이용하여 프로그램이 수행될 때의 권한을 확인할 수 있음.

Q. Windows Vista에서는 C:\Windows\Downloaded Program files\에서 설치된 ActiveX를 삭제할 수 없는 현상
A.원인: Windows Vista에서는 강화된 ActiveX Opt-in 기능과 시스템 영역에 대한 파일 쓰기 및 변경의 제한으로 ActiveX가 설치된 위치에서 삭제가 불가능함.
→ 해결방안: 인터넷 옵션의 프로그램 탭에서 기능 추가/제거를 누른 후 목록에서 삭제하고자 하는 ActiveX를 선택 후 삭제 버튼을 눌러서 삭제, 별도 설치 패키지를 이용해서 설치된 ActiveX는 프로그램 추가/제거에서 직접 선택하여 삭제

Q. 로그인한 사용자가 쓰기 가능한 폴더의 경로를 얻어오는 함수는 무엇
A.→ 방법: Windows Vista에서 사용 가능한 함수로 SHGetKnownFolderPath가 제공되며, %UserProfile% 폴더 하위의 로그인한 사용자 명의 폴더로 경로를 지정하는 방법이 있음.

이 게시물을

공유하기

번호
분류
제목
조회 수
185
조회 수: 8785
183
조회 수: 5046

SEARCH