在 C#/UWP 中获取“应用程序显示名称”

Posted

技术标签:

【中文标题】在 C#/UWP 中获取“应用程序显示名称”【英文标题】:Get 'Application Display Name' in C# / UWP 【发布时间】:2021-03-06 13:44:24 【问题描述】:

According to the docs我可以用这个:Windows.ApplicationModel.AppDisplayInfo.DisplayName

但我收到错误:An object reference is required for the non-static field, method, or property 'AppDisplayInfo.DisplayName

我无法添加“AppDiagnostics”功能或使用包显示名称,这似乎是最常见的解决方案。是文档错误还是我做错了什么?

【问题讨论】:

【参考方案1】:

如果有人在 WinUI 3 中需要它

Windows.ApplicationModel.Package.Current.DisplayName

【讨论】:

如果我没记错的话 - 我不能使用“包”显示名称,因为它与“应用程序”显示名称不同(应用程序标题栏中显示的内容)。具体记不太清了【参考方案2】:

如果你只想要你当前项目的DisplayName,你可以使用下面的代码而不需要声明appDiagnostics能力:

string displayName = Windows.ApplicationModel.AppInfo.Current.DisplayInfo.DisplayName;

如果你想要UWP应用、Win32应用、系统服务等所有正在运行的应用中的DisplayName,你需要先在manifest中添加appDiagnostics能力。

查看添加appDiagnostics功能的步骤:

    Package 中添加xmlns:rescap,在IgnorableNamespaces 中添加rescap。然后,在Capabilities 中添加appDiagnostics 功能。
    <Package   xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 
    IgnorableNamespaces="uap mp rescap">
      <Capabilities>
        <rescap:Capability Name="appDiagnostics" />
      </Capabilities>
    </Package>
    appDiagnostics 能力为受限能力,需要获得用户的许可。在第一次调用诊断 API(如AppDiagnosticInfo.RequestInfoAsync())时,将触发用户同意提示。或者用户可以打开设置面板,找到隐私选项并设置应用诊断

请注意,如果权限被用户拒绝,则 API 将仅返回有关当前应用的信息。

    添加以下代码可查看所有正在运行的应用的DisplayName
var list = await AppDiagnosticInfo.RequestInfoAsync();
foreach (var info in list)

    string name = info.AppInfo.DisplayInfo.DisplayName;

【讨论】:

以上是关于在 C#/UWP 中获取“应用程序显示名称”的主要内容,如果未能解决你的问题,请参考以下文章

获取我的应用程序有权访问c#UWP的文件夹列表

C# Uwp app webbrowser 控件无法获取设备位置

如何在 UWP 应用(C# 或 WinJS)中获取 Windows 10 版本(例如 1809、1903、1909、...)?

在 UWP 应用中获取计算机上任何文件的路径

无法在 UWP 应用中获取某些用户帐户信息 - 内部活动目录(不是 Azure AD)

从api获取图像作为字符串?到 UWP 应用程序