• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Fcoding_狂人
自由 编码 Fcoding
博客园    首页    新随笔    联系   管理     

[转]让程序不触发 Vista/Win7下应用程序兼容性助手弹出 .

原文地址

http://blog.csdn.net/maxuhuiabc/article/details/6081874

在Vista/Win7下 运行一个 exe 应用程序后,系统经常弹出 兼容性助手对话框。这个十分烦人,上网搜索解决方案,
 满屏都是修改系统组策略(实质是修改注册表),但是作为一个商业产品,有的用户不同意你随便修改他们的系统,
 即便是你的安装程序偷偷的改也不行。而且这种解决方案不应该是一个开发人员的首选方案。


     其实对于这个问题,微软已经为应用程序的 menifest 文件中添加了一个新的<compatibility> Section, 这个Section
用来指定你的应用程序可以兼容的操作系统。以下是MSDN上给出的示例:
   <?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>
    </assembly>
如果你的应用程现在正在使用一个manifest文件的话,那么将对应的 <compatibility> 节点添加到你的menifest文件中。
修改完这个manifest文件后,需要将你的程序重新编译一下,才能起作用(不知道这个是为什么).
另: 对于WindowsXP 这样的较早的操作系统,会忽略这个节点,所以这坨节点数据是向下兼容的。
  
有的人或许不喜欢一个.exe 带着一个 .manifest文件。这样来回复制时比较麻烦。
我们可以使用 mt.exe 工具处理一下,不过有一点要注意,你的项目编译时需要禁用 Incremental Build 选项。
     mt -nologo -manifest VS2003Style.exe.manifest -outputresource:vs2003Style.exe;1
    ( 注: 1 -- 表示exe; 2 -- 表示dll)
这样,manifest文件就被整合到.exe文件里面去了。再也不需要一个小尾巴了。

posted @ 2013-10-22 13:49  Fcoding_狂人  阅读(418)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3