.NET桌面程序如何设置任务栏图标右键菜单中的名称

右键任务栏中应用程序图标时会显示程序名称,例如:
在这里插入图片描述

这里显示的并不是程序文件名DingTalk,而是文件属性中详细信息选显卡下的“文件说明”。
在这里插入图片描述

在.NET桌面程序中,是通过修改程序集名称(AssemblyTitle)来设置该值,C++程序则是添加版本信息设置FileDescription属性。但是,这个属性和应用程序图标一样,会被缓存到系统注册表中。当第一次右键查看任务栏中程序图标时,会在注册表添加缓存记录。系统优先读取注册表中缓存的信息。因此,在.NET程序中修改了程序集名称后需要删除对应的注册表项。具体信息是MuiCache{程序绝对路径}.FriendlyAppName的注册表项

HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
C:\Program Files (x86)\DingDing\main\current\DingTalk.exe.FriendlyAppName

如果注册表中已经注册过名称,但注册的名称与想要的不一致,也可以通过Microsoft.Win32.Registry类来访问和修改Windows注册表。以下是一个示例代码,用于判断并修改注册表中的值:

using Microsoft.Win32;
using System;

class Program
{
    static void Main(string[] args)
    {
        const string registryKey = @"HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache";
        const string valueName = @"C:\Program Files (x86)\DingDing\main\current\DingTalk.exe.FriendlyAppName";
        const string newValue = "New Friendly App Name";

        // 判断注册表中是否存在指定的键和值,如果不存在或值不一样则修改
        if (!object.Equals(Registry.GetValue(registryKey, valueName, null), newValue))
        {
            // 修改注册表中的值
            Registry.SetValue(registryKey, valueName, newValue);
            Console.WriteLine("Value modified successfully.");
        }
        else
        {
            Console.WriteLine("Value does not exist in the registry.");
        }
    }
}

需要注意,上述代码中的registryKeyvalueName变量需要根据你的实际情况进行修改。另外,请确保以管理员身份运行该程序,以便具有足够的权限来修改注册表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劉煥平CHN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值