使用应用程序清单文件

概述

在传统 WinForm 应用程序开发中您可以不必过多的关心应用程序清单文件,因为这些文件对于传统 WinForm 应用程序来说并不是必须的。但是在 WinFormium 应用程序中,很多功能与应用程序清单文件息息相关,因此您需要了解如何使用应用程序清单文件。

为应用程序创建清单文件

在您的 WinFormium 应用程序项目文件上点击添加右键,在“添加”,“新建项”里面选择“应用程序清单文件”并点击“添加”,这样就可以为当前项目添加一个应用程序清单文件。

您可以在应用程序清单文件中为当前应用配置以下功能:

设置 Windows 用户账户控制级别

有些使用应用程序需要在提升了用户级别的情况下才能正常运行,这时您可以在应用程序清单文件中设置 Windows 用户账户控制级别。例如:读写注册表、读写系统文件等。

在清单文件中已默认帮您添加好了各个级别的配置信息,您可以根据需求选择合适的级别。

  1. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  2. <security>
  3. <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  4. <!-- UAC 清单选项
  5. 如果想要更改 Windows 用户帐户控制级别,请使用
  6. 以下节点之一替换 requestedExecutionLevel 节点。
  7. <requestedExecutionLevel level="asInvoker" uiAccess="false" />
  8. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  9. <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
  10. 指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
  11. 如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
  12. 元素。
  13. -->
  14. <requestedExecutionLevel level="asInvoker" uiAccess="false" />
  15. </requestedPrivileges>
  16. </security>
  17. </trustInfo>

如果需要了解更多关于 Windows 用户账户控制级别的信息,请参考 Windows 用户账户控制

设置应用程序 DPI 感知

在 Windows 10 以及更高版本的 Windows 操作系统中,您可以为应用程序设置 DPI 感知,以便应用程序在高 DPI 缩放比例的显示器上能够正常显示。.NET Core 框架已经为您提供了这些功能,您无需为这些版本的框架配置应用程序清单文件,但是在基于 .NET Framework 的应用程序,您还是需要在应用程序清单文件中添加以下配置:

  1. <application xmlns="urn:schemas-microsoft-com:asm.v3">
  2. <windowsSettings>
  3. <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
  4. <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
  5. </windowsSettings>
  6. </application>

如果需要了解更多关于 DPI 感知的信息,请参考 DPI 感知

启用 Windows 公共控件和对话框的主题

在 CEF 运行时中,您可以使用 Windows 公共控件和对话框,但是这些控件和对话框的主题默认是不启用的,您可以在应用程序清单文件中添加以下配置来启用这些控件和对话框的主题:

  1. <dependency>
  2. <dependentAssembly>
  3. <assemblyIdentity
  4. type="win32"
  5. name="Microsoft.Windows.Common-Controls"
  6. version="6.0.0.0"
  7. processorArchitecture="*"
  8. publicKeyToken="6595b64144ccf1df"
  9. language="*"
  10. />
  11. </dependentAssembly>
  12. </dependency>

启用以上配置后最直观的表现在于,不启用该配置将导致网页中带有 title 属性的元素无法正常显示,启用后则可以正常显示。

提示

如果您的应用程序采用主进程和浏览器子进程独立运行的方式,那么您需要在主进程和浏览器子进程的应用程序清单文件中都添加以上配置。并且配置内容需要保持一致。