让程序不触发 Vista/Win7下应用程序兼容性助手弹出
2010-12-17 12:10
225 查看
在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文件里面去了。再也不需要一个小尾巴了。
满屏都是修改系统组策略(实质是修改注册表),但是作为一个商业产品,有的用户不同意你随便修改他们的系统,
即便是你的安装程序偷偷的改也不行。而且这种解决方案不应该是一个开发人员的首选方案。
其实对于这个问题,微软已经为应用程序的 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文件里面去了。再也不需要一个小尾巴了。
相关文章推荐
- [转]让程序不触发 Vista/Win7下应用程序兼容性助手弹出 .
- 通过修改程序解决win7下应用程序兼容性助手弹出
- 通过修改程序解决win7下应用程序兼容性助手弹出
- 关于可执行程序 执行后 弹出“兼容性助手” 和 cef 客户端 titel无法显示的问题。
- WIN7下弹出应用程序兼容性助手解决
- QQ程序弹出对话框“应用程序无法启动,因为应用程序的并行配置不正确
- 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
- VC DataGrid使用问题,在其它电脑上,应用数据程序弹出“未成功配置,应用程序无法启动”
- 控制台应用程序转成MFC程序错误—OcrRec.exe触发一个触点,原因可能是堆被破坏
- MFC应用程序关闭时,提示兼容性助手。
- 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
- 如何在android程序执行初始化的时候弹出一个PopupWindow 触发的事件是在初始化的时候。
- Windows 7的应用程序兼容性和絮叨的应用程序兼容性助手
- 打开“添加或删除程序”弹出 rundll32.exe-应用程序错误 “0x00310030” 解决办法
- 让程序在Vista/Win7下弹出UAC提示来获得管理员方式执行
- 运行QQ程序弹出对话框“应用程序无法启动,因为应用程序的并行配置不正确”
- Tips:Windows 7的应用程序兼容性和絮叨的应用程序兼容性助手
- Win8/8.1程序兼容性助手功能的关闭小技巧
- 打开”添加/删除Windows组件”时弹出”安装程序无法打开信息文件setupqry.inf”的解决办法
- Android 在安装完成界面,点击打开应用程序。在应用程序点击home键,再从桌面打开程序导致产生多个实例或者说程序被重复打开。(为了把问题写清楚,标题一定要长长长........)