You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么打包的单窗口WinForms应用任务栏不显示徽章通知?

行为说明

你遇到的属于Windows平台对打包Win32应用的默认预期行为。默认状态下,打包后的WinForms等桌面应用的单窗口任务栏图标未与应用包的身份标识(AUMID,应用用户模型ID)完成绑定,系统只会将徽章通知同步到开始菜单的应用入口,不会同步到单窗口的任务栏图标;多窗口打开时系统会自动触发身份关联逻辑,所以徽章可以正常显示,关闭第二个窗口后关联失效,徽章随之消失。

解决方案

按照以下两步配置即可实现单窗口下任务栏正常显示徽章:

  1. 修改打包应用的清单文件(Package.appxmanifest)
    打开你打包项目的Package.appxmanifest,首先在根节点<Package>中声明所需的扩展命名空间:
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
  xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
  IgnorableNamespaces="uap rescap desktop desktop4">

之后在<Applications>节点下的对应<Application>节点内添加桌面扩展声明,明确关联应用的任务栏行为和通知身份:

<Applications>
  <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
    <!-- 此处保留原有其他配置 -->
    <Extensions>
      <desktop:Extension Category="windows.toastNotificationActivation">
        <desktop:ToastNotificationActivation ToastCapable="true" />
      </desktop:Extension>
      <desktop4:Extension Category="windows.appIcons">
        <desktop4:AppIcons>
          <desktop4:AppIcon DisplayName="你的应用名称" Resource="Images\Square44x44Logo.targetsize-32_altform-unplated.png" />
        </desktop4:AppIcons>
      </desktop4:Extension>
    </Extensions>
  </Application>
</Applications>
  1. 在主窗口初始化时显式绑定AUMID
    在WinForms主窗体的构造函数或Form_Load事件中添加代码,将当前窗口与打包应用的AUMID绑定:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

public partial class MainForm : Form
{
    [DllImport("shell32.dll", SetLastError = true)]
    private static extern int SetWindowProperty(IntPtr hwnd, string key, IntPtr value);

    private void SetWindowAumid(IntPtr hwnd, string aumid)
    {
        const string AppUserModelIdKey = "System.AppUserModel.ID";
        var hGlobal = Marshal.StringToHGlobalUni(aumid);
        try
        {
            SetWindowProperty(hwnd, AppUserModelIdKey, hGlobal);
        }
        finally
        {
            Marshal.FreeHGlobal(hGlobal);
        }
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        // 获取当前打包应用的AUMID
        var aumid = Windows.ApplicationModel.AppInfo.Current.Id.UserModelId;
        SetWindowAumid(this.Handle, aumid);
    }
}

以上配置要求系统版本最低为Windows 10 1903(18362),与你当前使用的目标框架要求的系统版本一致,无需额外降级适配。完成配置后重新编译打包,单窗口状态下任务栏即可正常显示徽章通知。

内容的提问来源于stack exchange,提问作者Carl Gronvald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:51:04