导读:本期聚焦于小伙伴创作的《C#如何通过纯代码创建桌面快捷方式、程序菜单项和添加网页到收藏夹》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何通过纯代码创建桌面快捷方式、程序菜单项和添加网页到收藏夹》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,经常需要实现一些系统级的自动化配置操作,比如给应用创建桌面快捷方式、在程序菜单中添加启动项,或者把常用网页添加到浏览器收藏夹。这些操作不需要依赖第三方工具,通过系统自带的接口和COM组件就能实现,下面我们逐一讲解具体实现方法。

C#如何通过纯代码创建桌面快捷方式、程序菜单项和添加网页到收藏夹

准备工作

创建桌面快捷方式和程序菜单项需要用到Windows Script Host Object Model的COM组件,首先需要在项目中添加对应的引用。右键点击项目引用,选择添加引用,在COM选项卡中找到Windows Script Host Object Model,勾选后确认添加,对应的命名空间是IWshRuntimeLibrary

创建桌面快捷方式

桌面快捷方式的本质是一个后缀为.lnk的文件,存放在桌面路径下,通过IWshRuntimeLibraryWshShell类可以创建这类文件。

实现步骤

  • 获取桌面路径,通过Environment.GetFolderPath(Environment.SpecialFolder.Desktop)可以拿到当前用户的桌面目录
  • 创建WshShell实例,用于操作快捷方式
  • 指定快捷方式的目标路径、名称、图标等属性,保存为.lnk文件

代码示例

using System;
using System.IO;
using IWshRuntimeLibrary;

namespace ShortcutDemo
{
    class DesktopShortcutCreator
    {
        /// <summary>
        /// 创建桌面快捷方式
        /// </summary>
        /// <param name="targetPath">快捷方式指向的目标程序路径</param>
        /// <param name="shortcutName">快捷方式名称</param>
        /// <param name="iconPath">快捷方式图标路径,可为空</param>
        public static void CreateDesktopShortcut(string targetPath, string shortcutName, string iconPath = null)
        {
            // 获取桌面路径
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            // 快捷方式完整路径
            string shortcutPath = Path.Combine(desktopPath, $"{shortcutName}.lnk");
            
            // 如果已存在同名快捷方式,先删除
            if (File.Exists(shortcutPath))
            {
                File.Delete(shortcutPath);
            }
            
            // 创建WshShell实例
            WshShell shell = new WshShell();
            // 创建快捷方式对象
            IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);
            
            // 设置快捷方式属性
            shortcut.TargetPath = targetPath; // 目标程序路径
            shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath); // 工作目录
            shortcut.WindowStyle = 1; // 窗口样式,1为正常窗口
            shortcut.Description = $"{shortcutName}快捷方式"; // 描述信息
            // 如果传入了图标路径,设置图标
            if (!string.IsNullOrEmpty(iconPath) && File.Exists(iconPath))
            {
                shortcut.IconLocation = iconPath;
            }
            
            // 保存快捷方式
            shortcut.Save();
            Console.WriteLine($"桌面快捷方式创建成功,路径:{shortcutPath}");
        }
    }
}

创建程序菜单项

程序菜单项分为当前用户所有和程序所有用户两种,对应的路径分别是Environment.SpecialFolder.StartMenuEnvironment.SpecialFolder.CommonStartMenu,实现方式和桌面快捷方式类似,只是存放路径不同。

代码示例

using System;
using System.IO;
using IWshRuntimeLibrary;

namespace ShortcutDemo
{
    class StartMenuShortcutCreator
    {
        /// <summary>
        /// 创建程序菜单项
        /// </summary>
        /// <param name="targetPath">目标程序路径</param>
        /// <param name="shortcutName">菜单项名称</param>
        /// <param name="forAllUsers">是否为所有用户创建</param>
        public static void CreateStartMenuShortcut(string targetPath, string shortcutName, bool forAllUsers = false)
        {
            // 根据参数选择程序菜单路径
            Environment.SpecialFolder folder = forAllUsers ? Environment.SpecialFolder.CommonStartMenu : Environment.SpecialFolder.StartMenu;
            string startMenuPath = Environment.GetFolderPath(folder);
            // 可以在程序菜单下创建子文件夹,这里直接放在根目录
            string shortcutPath = Path.Combine(startMenuPath, $"{shortcutName}.lnk");
            
            if (File.Exists(shortcutPath))
            {
                File.Delete(shortcutPath);
            }
            
            WshShell shell = new WshShell();
            IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);
            
            shortcut.TargetPath = targetPath;
            shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath);
            shortcut.Description = $"{shortcutName}程序菜单项";
            shortcut.WindowStyle = 1;
            
            shortcut.Save();
            Console.WriteLine($"程序菜单项创建成功,路径:{shortcutPath}");
        }
    }
}

添加网页到收藏夹

Windows系统的IE浏览器收藏夹路径在Environment.SpecialFolder.Favorites下,每个收藏项是一个.url后缀的文件,文件内容是固定的格式,写入对应内容即可完成添加。如果是其他浏览器,需要找到对应浏览器的收藏夹路径,原理类似。

实现步骤

  • 获取收藏夹路径
  • 创建.url文件,写入对应的配置内容
  • 指定网页的URL、标题、图标等属性

代码示例

using System;
using System.IO;
using System.Text;

namespace ShortcutDemo
{
    class FavoritesAdder
    {
        /// <summary>
        /// 添加网页到IE收藏夹
        /// </summary>
        /// <param name="webUrl">网页URL</param>
        /// <param name="webTitle">网页标题</param>
        public static void AddWebToFavorites(string webUrl, string webTitle)
        {
            // 获取收藏夹路径
            string favoritesPath = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
            // 收藏项文件路径
            string favoriteFilePath = Path.Combine(favoritesPath, $"{webTitle}.url");
            
            if (File.Exists(favoriteFilePath))
            {
                File.Delete(favoriteFilePath);
            }
            
            // 构建.url文件内容
            StringBuilder urlContent = new StringBuilder();
            urlContent.AppendLine("[InternetShortcut]");
            urlContent.AppendLine($"URL={webUrl}");
            urlContent.AppendLine($"IconFile={webUrl}"); // 图标可以指定为网页favicon
            urlContent.AppendLine("IconIndex=0");
            
            // 写入文件
            File.WriteAllText(favoriteFilePath, urlContent.ToString(), Encoding.Default);
            Console.WriteLine($"网页已添加到收藏夹,路径:{favoriteFilePath}");
        }
    }
}

注意事项

  • 创建所有用户的程序菜单项需要管理员权限,否则会抛出权限异常
  • 目标程序路径需要是绝对路径,否则快捷方式可能无法正常启动
  • 如果目标程序是.NET程序,建议把快捷方式的工作目录设置为程序所在目录,避免相对路径资源加载失败
  • 其他浏览器的收藏夹路径不同,比如Chrome的收藏夹通常在用户目录的AppData下,需要根据实际情况调整路径

调用示例

可以在Main方法中调用上述方法测试效果:

using System;

namespace ShortcutDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 测试创建桌面快捷方式,替换为你的程序路径
            string targetExe = @"C:\Windows\notepad.exe";
            DesktopShortcutCreator.CreateDesktopShortcut(targetExe, "记事本快捷方式");
            
            // 测试创建程序菜单项
            StartMenuShortcutCreator.CreateStartMenuShortcut(targetExe, "记事本菜单项", false);
            
            // 测试添加网页到收藏夹
            FavoritesAdder.AddWebToFavorites("https://ipipp.com", "示例网站");
            
            Console.WriteLine("所有操作完成,请检查对应位置");
        }
    }
}

C#桌面快捷方式IWshRuntimeLibrary程序菜单项网页收藏夹修改时间:2026-05-29 04:33:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。