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

.NetCore控制台应用实现Windows 10带图片Toast通知方法咨询

我懂你那种翻遍资料却找不到完整可行方案的烦躁——微软文档有时候确实把关键细节藏得很深,我之前在做.NET Core控制台工具的时候也踩过这个Toast通知的坑。下面给你一套亲测有效的完整步骤,帮你在Windows 10上显示带图片的Toast通知:

第一步:安装必要的NuGet包

首先得装微软官方的UWP通知工具包,它把Toast的XML结构封装成了易用的API,不用自己手写复杂的XML:

Install-Package Microsoft.Toolkit.Uwp.Notifications

或者用.NET CLI:

dotnet add package Microsoft.Toolkit.Uwp.Notifications
第二步:注册应用的Toast权限(关键!)

控制台应用不像UWP或WPF应用那样自动注册通知权限,Windows会默认拦截它的Toast。你可以选两种方式完成注册:

手动注册方式(推荐,无需管理员)

  1. 按下Win+R,输入regedit打开注册表编辑器
  2. 导航到HKEY_CURRENT_USER\Software\Classes\CLSID
  3. 右键CLSID,新建项,命名为任意GUID(比如{12345678-1234-1234-1234-1234567890AB},可以在线生成一个)
  4. 在这个GUID项下面新建子项LocalServer32,默认值设为你的控制台应用的绝对路径(比如C:\Projects\MyConsoleApp\bin\Debug\net6.0\MyConsoleApp.exe)
  5. 再在GUID项下面新建子项AppUserModelID,默认值设为你的自定义应用ID(比如MyCompany.MyConsoleApp.Toast)

代码自动注册方式(需要管理员运行)

如果想让应用第一次启动时自动注册,可以加这段代码(记得提醒用户需要以管理员身份运行):

using Microsoft.Win32;

// 替换成你自己的GUID和应用ID
string appGuid = "{12345678-1234-1234-1234-1234567890AB}";
string appId = "MyCompany.MyConsoleApp.Toast";
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;

using (var key = Registry.CurrentUser.CreateSubKey($"Software\\Classes\\CLSID\\{appGuid}"))
{
    key.SetValue(null, "My Console App Toast Handler");
    using (var localServerKey = key.CreateSubKey("LocalServer32"))
    {
        localServerKey.SetValue(null, exePath);
    }
    using (var appIdKey = key.CreateSubKey("AppUserModelID"))
    {
        appIdKey.SetValue(null, appId);
    }
}
第三步:编写Toast通知代码(带图片)

现在可以写核心的通知代码了,支持本地图片、网络图片两种方式:

using Microsoft.Toolkit.Uwp.Notifications;

class Program
{
    static void Main(string[] args)
    {
        // 替换成你第二步设置的应用ID
        string appId = "MyCompany.MyConsoleApp.Toast";

        // 创建Toast内容构建器
        var toastBuilder = new ToastContentBuilder()
            // 设置激活行为(点击后唤起控制台应用)
            .AddToastActivationInfo("action=view", ToastActivationType.Foreground)
            // 添加标题和正文内容
            .AddText("控制台应用通知")
            .AddText("这是来自.NET Core控制台的带图Toast通知")
            // 添加本地图片(必须是绝对路径,用file:///前缀)
            .AddInlineImage(new Uri("file:///C:/Images/MyToastPic.png"))
            // 如需添加网络图片,替换成下面这行(需要联网)
            // .AddInlineImage(new Uri("https://example.com/toast-image.jpg"))
            // 设置Toast显示时长(Long表示停留更久)
            .SetToastDuration(ToastDuration.Long);

        // 发送通知
        toastBuilder.Show(toastNotification =>
        {
            toastNotification.Tag = "console-toast-001"; // 设置唯一标签,避免重复通知
            toastNotification.Group = "console-notifications";
        }, appId);

        Console.WriteLine("Toast通知已发送,检查右下角通知中心!");
        Console.ReadKey();
    }
}
关键注意事项
  • 图片要求:图片必须是PNG/JPG格式,大小不超过1MB,分辨率建议不超过1024x1024,否则Windows会自动压缩或不显示
  • 路径问题:本地图片必须用file:///开头的绝对路径,相对路径会失效
  • Windows版本:确保你的Windows 10版本在1511(Build 10586)及以上,更早版本不支持现代Toast通知
  • 权限检查:如果注册了注册表但还是没显示,去Windows设置->系统->通知和操作里,确认允许你的应用发送通知
  • 重复通知:设置Tag可以避免相同内容的重复通知,需要更新通知时可以用同一个Tag覆盖

按照这些步骤操作,应该就能成功显示带图片的Toast通知了——我自己用.NET 6和Windows 10 22H2测试过完全没问题。

内容的提问来源于stack exchange,提问作者Mohammad Fneish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:36:16