- Windows 7용 manifest 삽질기
- 컴퓨터야그/컴퓨터 일반
- 2010. 12. 17. 21:08
많은 분들의 도움 덕분에 VCi 2.3에서 드래그앤 드롭이 정상동작 하지 않던 문제의 원인을 확인했다.
원인을 알고보니, 혹시나 걱정했던 문제가 아닌 1manifest를 잘못 지정한 것이 원인이었다.
Windows XP 시절에 uxtheme를 적용하기 위해 사용되던 manifest는 이런 형태였다. (이하 manifest-1)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.YourApplication"
type="win32"
/>
<description>YourApplication</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Vista/Win7 시절로 접어들면서 manifest를 통해 실행 권한을 부여하게 되었다.
아래와 같은 형태가 가장 기본적으로 적용되는 표준형 manifest이다. (이하 manifest-2)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.YourApplication"
type="win32"
/>
<description>YourApplication</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
그런데, 어디선가 주워들은 것이, Privilege를 더 높이면 항상 관리자 모드로 실행된다는 얘기였다.
아니! 그렇다면 manifest를 잘 지정하면 Windows 7에서 안정성을 높일 수 있다는 얘기이지 않은가!
그래서 지정한 형태가 아래와 같은 형태이다. (manifest-3)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.YourApplication"
type="win32"
/>
<description>YourApplication</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="False"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
그리고, VCi 2.3에 manifest-3을 적용하여 많은 PC에서 잘 동작하는 것을 확인했다.
그런데, 여러가지로 확인해본 결과 manifest-3은 일부 Windows 7에서 정상동작하지 않는 문제가 있었다.
결국 manifest-2로 돌아갔고, 잘 동작한다는 것을 확인했다. 휴~
덧. 도움을 주신 모든 분들께 감사드립니다. 고맙습니다. 꾸벅.
- Visual C++ 6.0은 Windows 7과 XP에서 컴파일한 결과가 다른 황당한 문제가 발생할 때가 있음 [본문으로]
'컴퓨터야그 > 컴퓨터 일반' 카테고리의 다른 글
Modified Haar Wavelet 변환에 대한 간단한 고찰 (2) | 2011.09.15 |
---|---|
Visual C++에서 NaN과 Inf의 사용 (4) | 2011.09.12 |
멀고도 험했던 코딩용 글꼴 선택기 (3) | 2010.12.02 |
한글 풀어쓰기→모아쓰기를 통해 얻은 지식들 (5) | 2010.09.26 |
출장 중 고맙게 설치한 무설치판 파폭 및 구글 어스 (11) | 2010.04.01 |
Recent comment