정리

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 파일로 해결됩니다.