XP 호환성 모드 조작하기 :: 2007/01/15 10:37


XP에서 프로그램의 등록정보를 보면 호환성 탭이 있습니다. 거기서 과거 특정 운영체제 호환모드로 프로그램을 실행시킬 수 있도록 하고 있습니다. 호환성 탭을 열면 아래와 같은 화면이 나옵니다. "다음에 대해 호환성 모드로 이 프로그램을 실행"에 체크 하고 운영체제를 선택하면 됩니다.

사용자 삽입 이미지

XP에서 호환성 모드를 체크할 경우 드라이버와 관련된 프로그램은 오동작할 가능성이 많이 있습니다. 이러한 경우에 사용할 수 있는 코드입니다. 특정 애플리케이션의 호환성 체크 유무와 함께, 호환성을 다른 값으로 설정할 수 있는 함수입니다.

오동작 원인
일반적으로 드라이버는 NT와 9x계열을 나누어 프로그램 합니다. 드라이버를 연동하는 프로그램에서 운영체제 버전을 구해서 알맞은 버전을 로딩하도록 하죠. 그런데 버전을 구하는데 많이 사용되는 GetVersionEx의 값이 위의 호환성 체크를 해두면 바뀝니다. 실제 O/S는 XP인데, 9x 호환성 체크를 해두면 9x라고 버전이 나오는 것이죠. 그래서 잘못된 드라이버를 로딩할 수 있습니다. 물론 VerifyVersionInfo라는 함수를 쓰면 호환성을 무시하고 진짜 버전을 구할수 있긴 합니다.



호환성 모드를 조사하는 함수입니다. 리턴값은 호환성 모드 입니다.
첫번째 인자는 파일 경로입니다.


호환성 모드를 설정하는 함수입니다. apcfNewType에 적당한 호환성 값을 넣어 주시면 됩니다.



스폰서
글타래

  • 2주간 인기 글
  • 2주간 인기글이 없습니다.
Trackback Address :: http://jiniya.net/tt/trackback/25
  • Gravatar Image.
    루돌프 | 2007/01/15 13:27 | PERMALINK | EDIT/DEL | REPLY

    락걸려서 안돌아가는 BB 프로그램들도 -_-
    호환성으로 예전버전에 해놓고 하면 돌아가는 경우가 간혹 있더군요;;ㄷㄷ

    • Gravatar Image.
      codewiz | 2007/01/16 10:43 | PERMALINK | EDIT/DEL

      BB 프로그램이 뭔가요?
      옛날 오락들도 저거 설정하면 돌아가고 하는 것들이 있다더군요.

  • Gravatar Image.
    ㅎㅎ | 2012/12/17 22:27 | PERMALINK | EDIT/DEL | REPLY

    VerifyVersionInfo를 쓰면
    호환모드에 상관없이 OS버전을 구할수 있군요!
    감사합니다! ㅋ

Name
Password
Homepage
Secret