如何在 Visual Studio 2015 的控制面板上设置 C# 应用程序图标

标记杂耍

这是一个外观问题,但我的应用程序在控制面板上有一个默认图标。许多其他应用程序都有自定义图标。

我的应用程序确实有菜单和任务栏的自定义图标。

如何使用 Visual Studio 2015 或更高版本更改控制面板上显示的图标?

更新:

Visual Studio 创建安装程序的方式发生了变化。我不确定它是什么时候发生的,但 2015 年肯定没有“部署项目”。Google 上的大多数点击都建议转到 VS 2015 应用程序下不存在的部署项目属性。

这就是为什么我包含了 visual-studio-2015 标签的原因。抱歉,没有在原始问题中提到这一点。这将是很好的信息。

可以使用注册表,但提到的注册表路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 不存在。让应用程序一直在注册表中检查它自己的图标确实听起来很笨拙。对我来说,这听起来像是一个安装程序功能。

标记杂耍

Microsoft Developer Network 上的一篇文章提供了答案。它还修改注册表。我通过删除应用程序名称和图标文件的硬编码值来增强它。

// These references are needed:
// using System.Reflection;
// using System.Deployment.Application;
// using System.IO;
// using Microsoft.Win32;

private static void SetAddRemoveProgramsIcon(string iconName)
{
    // only run if deployed
    if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.IsFirstRun)
    {
        try
        {
            string assemblyTitle="";

            object[] titleAttributes = Assembly.GetEntryAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), true);
            if (titleAttributes.Length > 0 && titleAttributes[0] is AssemblyTitleAttribute)
            {
                assemblyTitle = (titleAttributes[0] as AssemblyTitleAttribute).Title;
            }

            string iconSourcePath = Path.Combine(System.Windows.Forms.Application.StartupPath, iconName);
            if (!File.Exists(iconSourcePath))
            {
                return;
            }

            RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall");
            string[] mySubKeyNames = myUninstallKey.GetSubKeyNames();
            for (int i = 0; i < mySubKeyNames.Length; i++)
            {
                RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames[i], true);
                object myValue = myKey.GetValue("DisplayName");
                if (myValue != null && myValue.ToString() == assemblyTitle)
                {
                    myKey.SetValue("DisplayIcon", iconSourcePath);
                    break;
                }
            }
        }
        catch (Exception) { }
    }

    return;
}

Robin Shahan的原始文章在这里:RobinDotNet

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio 2015中制作C ++应用程序?

Visual Studio 2015“窃取”应用程序的控制台

如何为C ++ Visual Studio 2019指定应用程序图标?

在Visual Studio 2015社区中为现有C#控制台应用程序创建服务安装程序

如何在不通过控制面板的情况下在Windows 10上卸载Office 2015?

如何在控制面板中显示实际的应用程序大小?

Visual Studio 2015-C#Windows通用应用程序缺少程序集参考

无法启动程序C:\ ... \ ****。dll VB.net应用程序Visual Studio 2015

如何将在VS Express 2012上为Windows桌面制作的应用程序“转移”到Visual Studio 2015?

如何在C#Visual Studio 2015中制作可移植程序?

如何在Visual Studio 2015 for C中禁用警告?

如何使Visual Basic 2015表单应用程序作为控制台应用程序运行

如何在Visual Studio Community 2015上打开输入文件C ++?

如何使用 Inno Setup 中额外下载的大小更新 Windows 控制面板/设置应用程序中显示的应用程序大小

Visual Studio 2015 C ++中的CLR应用程序(无法识别的代码?)

控制面板类似C#中的应用程序

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

如何修改 Visual Studio 的 C# .Net Core 控制台应用程序项目模板

如何在Visual Studio 2015中编写API方法Node.js Express 3应用程序

如何在Visual Studio 2015中的各种文件上应用缩进?

如何在“控制面板”的“卸载程序”列表中添加图像/图标

如何在Visual Studio 2015 RTM中设置TypeScriptTarget

当构建cordova应用程序visual studio 2015时,“此应用程序无法在您的PC上运行!”

Visual Studio 2015-开始调试应用程序时如何停止EntryPointNotFoundException?

如何在Visual Studio 2015上隐藏团队活动行?

如何在Visual Studio 2015上安装.Net Core?

Visual Studio 2015中没有控制台应用程序?

启动时Visual Studio Community 2015控制台应用程序错误

控制台应用程序中的.NET System.MissingMethodException错误(Visual Studio 2015)