2009. 9. 22. 10:25

.exe에 Manifest 추가

뭍지도 따지지도 말고, 아래같이 추가하면 될거 같습니다.
저는 일단 Manifest Templete를 아래와 같이 사용하고 있습니다.
붉은색 부분 (프로그램_이름 / 프로그램_설명)을 re-define 하시기 바랍니다.
그리고, 실행 권한 옵션은 각주를 참고하세요.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
        <!--The ID below indicates application support for Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!--The ID below indicates application support for Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
</compatibility>[각주:1]

<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="프로그램_이름"
    type="win32"
/>
<description>프로그램_설명</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
  <requestedPrivileges>
   <requestedExecutionLevel
    level="asInvoker"[각주:2]
    uiAccess="false"
   />
  </requestedPrivileges>
 </security>
</trustInfo>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>[각주:3]
</dependency>
</assembly>

그리고, rc 파일에는 다음의 붉은색 부분을 추가하세요. (rc 파일 끝부분 입니다.)
위 xml을 manifest.xml로 저장했을때를 가정합니다.

...

#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define RT_MANIFEST 24
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\manifest.xml"

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED


  1. Windows 7, Windows Vista Ready 제품임을 알려주는 부분으로, 호환성 관리자(PCA)와 관련이 있습니다. * http://msdn.microsoft.com/en-us/library/aa480152.aspx#appcomp_topic19 * http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx 를 참고 바랍니다. [본문으로]
  2. asinvoker : 응용 프로그램을 시작한 프로세스와 동일한 권한으로 응용 프로그램이 실행 highestAvailable : 최대한 높은 권한 수준으로 응용 프로그램이 실행 requireAdministrator : 응용 프로그램이 관리자 권한으로 실행 http://msdn.microsoft.com/ko-kr/library/bb384691.aspx 중간 부분을 참고하세요. [본문으로]
  3. XP 테마를 적용합니다. [본문으로]