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

如何让开发的程序显示在Windows系统的应用和功能列表中?

让C#开发的应用显示在Windows「应用和功能」板块的实现方法

Windows系统「应用和功能」里的软件条目本质是读取注册表特定路径下的配置项生成的,你只要按照规则写入对应配置,就能让你的应用出现在列表里,常用两种实现方案:

方案1:使用安装打包工具实现(推荐正式发布使用)

这是最稳妥不需要自己处理注册表逻辑的方案,适合对外发布的正式应用:

  • 如果你用Visual Studio自带的Microsoft Visual Studio Installer Projects扩展打包:正常填写应用名称、版本、发布者、卸载逻辑等基础信息,生成的MSI安装包在安装时会自动写入对应注册表配置,安装完成后直接就能在「应用和功能」里看到条目。
  • 如果你用Inno Setup、NSIS这类第三方打包工具:在打包脚本里配置好应用基础信息、卸载程序路径,打包后的安装包安装后也会自动生成对应条目。

方案2:C#代码手动写入注册表实现

如果你做的是绿色软件,不想做安装包,可以在应用首次启动时主动写入注册表配置,注意写入全局配置需要管理员权限。

注册表路径说明

根据你的应用位数和生效范围选择对应路径:

  • 全局生效的64位应用(64位系统):HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • 全局生效的32位应用(64位系统):HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
  • 仅当前用户生效(不需要管理员权限):HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

必选配置项

你需要在上述路径下新建一个唯一子项(推荐用应用GUID或者唯一应用名作为子项名),子项内必须包含以下值:

  • DisplayName(字符串类型):「应用和功能」列表中显示的应用名称
  • DisplayVersion(字符串类型):应用的版本号
  • Publisher(字符串类型):应用发布者名称
  • UninstallString(字符串类型):点击卸载按钮时执行的命令,比如你的卸载程序路径,或者带卸载参数的应用启动路径,示例:"C:\Program Files\MyApp\MyApp.exe" /uninstall

可选配置项

添加后可以让条目显示更完整:

  • DisplayIcon(字符串类型):列表显示的图标路径,直接指向你的exe文件路径即可
  • InstallDate(字符串类型):安装日期,格式为YYYYMMDD
  • EstimatedSize(DWORD类型):应用占用磁盘大小,单位为KB

C#代码示例

using Microsoft.Win32;

// 示例:写入当前用户维度的应用条目,不需要管理员权限
void RegisterAppInUninstallList()
{
    string subKeyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyUniqueAppId";
    using (RegistryKey key = Registry.CurrentUser.CreateSubKey(subKeyPath))
    {
        if (key == null) return;
        
        key.SetValue("DisplayName", "我的C#应用");
        key.SetValue("DisplayVersion", "1.0.0");
        key.SetValue("Publisher", "我的开发团队");
        key.SetValue("UninstallString", @"""C:\Users\XXX\AppData\Local\MyApp\MyApp.exe"" /uninstall");
        // 可选参数
        key.SetValue("DisplayIcon", @"""C:\Users\XXX\AppData\Local\MyApp\MyApp.exe""");
        key.SetValue("InstallDate", DateTime.Now.ToString("yyyyMMdd"));
        key.SetValue("EstimatedSize", 10240, RegistryValueKind.DWord); // 约10MB
    }
}

注意事项

  • 写入HKEY_LOCAL_MACHINE下的注册表需要应用获得管理员权限,你可以给应用添加manifest文件声明需要管理员权限,或者首次启动时判断权限不足就主动提权。
  • 应用卸载时要记得删除对应的注册表子项,避免「应用和功能」里残留无效条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:00:05