默认情况下,像Visual Studio 2008或2010这样的新微软IDE会创建带有清单资源的exe文件。但我仍然在Visual Studio 6中有一些项目,我需要编译它们以最大程度地兼容Win Vista和Win 7.
因此,我对清单资源有很多疑问:
1.是否需要清单资源为Win7或WinVista创建应用程序?
2. WinVista和Win7在最小清单中需要什么信息?
3. Windiws 7下的程序兼容性助手能错误显示资源触发吗?
4. DLL是否需要清单资源?
5.我可以在哪里获得有关使用清单的信息?哪些程序必须具有清单资源?
回答
1.是否需要显示资源来为Win7或WinVista创建格式良好的应用程序?
没有清单(带有requestedExecutionLevel元素)Windows Vista和Windows 7使用启发式方法来尝试猜测应用程序是否为安装应用程序 - 这意味着正常的应用程序可能没有可识别的原因开始触发UAC提升预兆。
requestedExecutionLevel还告诉系统不虚拟化对受保护资源的访问。
2. WinVista和Win7在最小清单中需要什么信息?
至少是requestedExecutionLevel,所以UAC知道你是否 - 要求提升,并且不虚拟化对程序文件或HKLM的访问。
3. Windiws 7下的程序兼容性助手可能出错吗?
带有清单,Windows vista和7将认为你是一个“现代”的应用程序,它只是被打破了。程序兼容性助手逻辑保留用于遗留应用程序 - 即没有清单的应用程序或具有仅具有XP唯一条目的清单(即缺少requestedExecutionLevel)的应用程序。
4. DLL是否需要manifest资源?
从Windows 7开始只有当Dll使用它来绑定到并行程序集时。 MSDev Studio使用requestedExecutionLevel元素在Dll中创建清单,但实际上会产生无法在某些情况下成功加载的无效Dll。
5.我在哪里可以获得有关使用清单的信息?
在MSDN上:Isolated Applications and Side By Side Assemblies是我所知道的唯一的官方参考资料,即使尝试描述清单模式以及如何使用它们。
总结:如果您正在开发 - 从而有可能测试您的应用程序的行为 - 在Vista或Windows 7,这将是最好的,如果你提供一个清单,以避免你的申请被视为传统应用程序。
有几个原因可能需要清单。首先,您需要告诉Windows您的程序了解UAC策略。这需要包含<requestedExecutionLevel>
元素的清单。如果缺少这些信息,Windows会将您的程序视为传统程序,并将不安全访问重定向到注册表和文件系统。写入特权注册表键被重定向到HKCU。将文件写入特权目录将重定向到独立存储。
如果您的程序使用存储在Windows并行缓存中的DLL,则需要一个清单。如果你仍然使用VS6,这种情况不太可能发生。 WinSxS通过VS2005和VS2008程序用于MFC和CRT库。但不是VS2010,受到MSFT客户的普遍需求。
如果您要为应用程序启用可视化主题,则需要清单。从comctl32.dll版本6.0加载公共控件的现代版本所需的,它存储在并行缓存中,而不是存储在system32中的旧版本中。
如果您使用无注册表的COM,则清单条目会替换通常写入注册表的内容,从而允许本地部署进程内COM服务器,您需要清单。
大部分情况是在Visual Studio的现代版本中自动执行的。
- 1. 语言必须具备哪些功能?
- 2. Chrome扩展的资源必须在web_accessible_resources清单项中列出
- 3. 哪些PEP必须读取?
- 4. Android Studio:我必须在哪里放置资产和资源?
- 5. 每个好的CLI应用程序必须具备哪些基本参数?
- 6. ClickOnce:我必须签署ClickOnce清单和程序集吗?
- 7. 学习MSIL有哪些资源?
- 8. Android资源数量有哪些限制?
- 9. 具有单个属性的资源。签署一些有味道?
- 10. 具有单独资源的通用应用程序iPad/iPhone?
- 11. 清除/重置资源提供程序
- 12. 开发windows phone应用程序必须知道哪些编程语言?
- 13. WxRuby有哪些资源:文档,教程,示例?
- 14. 将资源注入到.NET程序集的清单中post-build
- 15. WPF - 只清除某些资源字典
- 16. 我必须设计一个具有1000个表单的Web应用程序
- 17. 如何找出哪些资源没有在Android应用程序中使用
- 18. 必须有非高清文件?
- 19. 我必须保护在线页面/目录有哪些选项?
- 20. 哪些是.net/java程序员的必须订阅的通讯订阅?
- 21. 清除资源
- 22. 程序的公共课程必须存储在哪里?
- 23. .NET Windows Service使用哪些资源?
- 24. 检查访问哪些帐户资源
- 25. 在Eclipse中向Tomcat服务器添加资源时,可以有哪些资源?
- 26. 必须所有原型单元格都具有类吗?
- 27. java.lang.IllegalStateException:必须有一些重叠的resourceIdToResName
- 28. Python初学者有哪些有用的在线资源?
- 29. 插入RSS订阅源的<description>时必须替换哪些字符?
- 30. 清单资源(Assembly.GetManifestResourceStream)的资源名称是什么?