通過修改程序解決win7下應用程序兼容性助手彈出

在win7和vista下,有一個系統兼容性助手功能,利用VS2008開發的程序在運行時,總是彈出應用程序兼容性助手提示框,非常煩人,事實上我們的程序兼容性是沒有問題的,只不過是在程序中沒有指定應用程序兼容的操作系統,所以導致了這一問題。

           .menifest文件是一個隨工程編譯產生的xml文件,作用是爲操作系統提供了對應用程序部分信息的描述,每個exe程序或者dll都必須有一個manifest,對於應用程序而言,Manifest可以是一個和exe文件同一目錄下的.manifest文件,也可以是作爲一個資源嵌入在exe文件內部的(通過修改項目配置manifest tool->input output->Embed Manifest->yes), 如果應用程序沒有.manifest文件,則會提示丟失MSVCR90D.dll,無法運行。

           微軟已經爲應用程序的 menifest 文件中添加了一個新的<compatibility> Section, 這個Section用來指定你的應用程序可以兼容的操作系統。以下是MSDN上給出的示例:

01.<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
02.  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
03.      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">  
04.          <application>  
05.              <!--The ID below indicates application support for Windows Vista -->  
06.              <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>  
07.              <!--The ID below indicates application support for Windows 7 -->  
08.              <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>  
09.          </application>  
10.     </compatibility>  
11.   </assembly>  

如果你的項目會生成一個.manifest文件的話,也就是不是內嵌模式,直接修改該文件,重新編譯即可。

如果你的項目設置的是將.manifest文件內嵌到應用程序內部,則你需要先修改爲非內嵌模式,編譯,生成.manifest文件,修改該文件後,再將工程屬性改爲內嵌模式。同時將修改後的.manifest文件通過additional manifest file 選項添加到工程裏面,重新編譯即可。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章