아.. 참으로 오랜만에 공개글을 올리게 되네요..
한동안 회사일로 바쁘다 보니, 비공개 자료만 쌓아왔는데.. ^^;

MSDN 에서 보면 GetVersionEx() 함수를 이용하여, 윈도우의 각종 버전 및 플래폼
그리고, 서비스팩 정보를 이용할 수 있는 샘플 자료가 있습니다.

위 자료를 좀 개선해서, Windows 2008 Servers 및 Windows Vista 에서도 정상적으로 동작하는
모델을 만들어 봤습니다. 클래스의 이름은 CWindowsVersion 입니다.

또한, 기존에 32 비트시스템에서 제작되어진 어플리케이션이 64 비트 윈도우에서 구동될 때
호환모드로 구동하게 되는데, 별다른 문제는 없지만 레지스트리를 액세스할 때 다음과 같은
문제가 발생합니다.

32비트 호환모드로 구동되는 프로그램은 HKEY_LOCAL_MACHINE\SOFTWARE 경로를
직접 액세스 할 수 없습니다.

64비트 전용으로 생성된 소프트웨어는 문제가 없지만 32비트로 만들어져 호환모드로 동작할 경우는
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node 아래처럼 32비트 응용프로그램을 위한
전용 경로를 사용해야합니다.

이것을 일일이 하나씩 변경하기 힘들어서, 64비트 운영체제에서 테스트해야하는 프로그램중에
32트로 만들어져 있고, 위의 경로및 그 경로의 하위를 액세스하는 경우 자동으로 경로를 변경해주어
동작하는데 문제가 없도록 API를 만들어 봤습니다.

소스는 Visual C++ 6.0, SP6, Enterprize Edition, 영문버전에서 작성되었으며
테스트는 Windows XP 32/64, Windows Server 2003 32/64, Windows Vista 32/64, Windows Server 2008 64
에서 테스트를 마쳤습니다.




+ Recent posts