c# - 使用 C# 通过 targetpath 删除/修改快捷方式

标签 c# shortcut

我们有用户将他们桌面上的快捷方式文件重命名为我们的应用程序。如果应用程序的图标发生变化,基于目标路径删除/修改快捷方式的最佳方法是什么?换句话说,我很难找到文件名,因为它一直在变化。

最佳答案

这是一个很好的问题,我很惊讶在 10 年内没有人回答正确。

下面的代码遍历给定文件夹中的所有链接,找到一个 TargetPath 指向当前正在执行的 WinForms 应用程序的链接。

将对项目的 COM 引用添加到 Windows 脚本宿主对象模型

    using IWshRuntimeLibrary;

    private static void DeleteShortcuts(string path)
    {
        // Example for path: Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

        foreach (var fileName in Directory.GetFiles(path, "*.lnk"))
        {
            WshShell shell = new WshShell();
            IWshShortcut link = (IWshShortcut)shell.CreateShortcut(fileName);
            if (link.TargetPath == Application.ExecutablePath)
            {
                System.IO.File.Delete(fileName);
            }
        }
    }

注意: Application.ExecutablePath 适用于 WinForms 以获取当前的 exe 路径,对于控制台应用程序,您应该使用 Path.GetDirectoryName(Environment.GetCommandLineArgs() [0])。请参阅其他类型项目的文档。

关于c# - 使用 C# 通过 targetpath 删除/修改快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512048/

相关文章:

java - 复合比较运算符有什么意义?

c# - 强制文件下载头

c# - 如何从函数返回键值对

c# - 同时从多个文本框中选择文本

wix - 以管理员身份运行启动时的快捷方式

c# - 将 i 值添加到控件名称

c# - Visual Studio 2012 中的大括号自动完成

java - 将 Android 启动器快捷方式添加到主屏幕

java - 用于快捷方式 URL 的 Windows 快捷方式 (.lnk .url) 解析器