Windows XP sp2 환경에서 exe 또는 dll 사용 시 재부팅 문제
저장소/VC++Windows XP sp2 환경에서 exe 또는 dll 사용 시 재부팅 문제.
내가 찾은거 아니지만 정리..
MS 원문 : http://support.microsoft.com/kb/921337
Windows XP 서비스 팩 2(SP2)에서 Windows Vista 확장이 포함된 매니페스트를 .exe 또는 .dll 파일에 추가하면 컴퓨터가 다시 시작될 수 있다
Microsoft Windows Vista 확장이 포함된 매니페스트를 .exe 또는 .dll 파일에 추가하면 컴퓨터가 다시 시작될 수 있습니다.
이 문제는 Microsoft Windows XP 서비스 팩 2(SP2) 기반 컴퓨터에서 발생합니다. 또한 .exe 파일이 실행되거나 .dll
파일이 로드되는 경우에도 이 문제가 발생합니다. Microsoft Windows Vista 확장이 포함된 매니페스트 세그먼트의 예제는 다음과
같습니다.
//The section between >>>>> and <<<< is the problematic section. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Synergex.Synergyde.lm" type="win32"> </assemblyIdentity> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"> </assemblyIdentity> </dependentAssembly> </dependency> >>>>>>>>>>> <ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3" xmlns="urn:schemas-microsoft-com:asm.v3"> <ms_asmv3:security xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3"> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"> </requestedExecutionLevel> </requestedPrivileges> </ms_asmv3:security> </ms_asmv3:trustInfo> <<<<<<<<<<< </assembly>
이 문제는 Csrss.exe에서 Windows Vista 확장이 포함된 매니페스트를 포함하는 .exe 파일이나 .dll 파일을 로드하는 경우 발생합니다. Csrss.exe에서 포함된 매니페스트의 구문을 분석할 때 두 스키마 속성이 있는 단일 태그를 발견하면 내부 메모리가 손상될 수 있습니다. 위의 예제에서 두 스키마 속성이 포함된 태그는 다음과 같습니다.<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3" xmlns="urn:schemas-microsoft-com:asm.v3">Csrss.exe에서 이러한 태그를 발견하면 메모리 손상으로 인해 액세스 위반이 발생하며, 이 때문에 Windows가 다시 시작됩니다. 최종 사용자는 이 문서에서 설명하는 핫픽스를 구해 이 문제를 해결할 수 있습니다. 소프트웨어 개발자는 매니페스트의 모든 속성에 단일 스키마만 존재하도록 하여 이 문제를 방지할 수 있습니다. 위의 예제에서 다음과 같은 태그를 사용하면 이 문제가 방지됩니다.<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">Visual Studio 2005에서 만든 매니페스트가 이 문제를 나타낼 수 있습니다. 이 문제는 Visual Studio 2005 서비스 팩 1에서 업데이트된 Mt.exe 파일로 해결됩니다.
'저장소 > VC++' 카테고리의 다른 글
[C++] RTTI와 dynamic_cast (0) | 2012.08.13 |
---|---|
[Win32 API] 메모리 유효성 검증(사용 금지) (0) | 2012.06.20 |
[MFC] CDockablePane (0) | 2012.02.10 |
[MFC] Application Layout State - 레이아웃 상태(저장) 관련 내용 (0) | 2012.02.10 |
[Debugging] First-chance Exception과 Second-chance Exception (0) | 2012.01.12 |