是否可以使用 C# 搜索和删除指向 EXE 的所有快捷方式?

Is it possible to search & delete ALL shortcuts pointing to an EXE using C#?

所以我分发了一个软件(Patcher.exe)。我们现在需要将 Patcher.exe 重命名为 SystemPatcher.exe.

但是,我们希望尽量减少(如果不能完全避免)捷径问题。

这样做...我想制作一个新的 C# 程序,与原来的 Patcher.exe 同名,并让它搜索并删除所有指向 Patcher.exe 的快捷方式。然后它将在用户桌面上创建一个新的 SystemPatcher.exe 快捷方式,并通知他们更改。

我可以做最后一点,但我的问题是我不知道是否可以在用户计算机上搜索指向 Patcher.exe 的所有快捷方式并删除它们。

这可能吗?有没有人知道如何在 C# 中完成此操作?

P.S 不让旧的 Patcher.exe 简单地启动系统 Patcher.exe 不是一个选项(由于某种原因它会导致其他软件出现问题)。

您可以使用您的用户权限迭代所有 .lnk 文件。

void Main()
{
    SearchAndDestroy("c:\");
}

static void SearchAndDestroy(string folder)
{
    Parallel.ForEach(Directory.GetFiles(folder, "*.lnk"), file =>
     {
        try
         {

             if (File.ReadLines(file).Any(line => line.Contains("your.exe")))
             {
                 // delete it
             }
         }
         catch (Exception)
         {

             // inaccesible file
         }
     });

    Parallel.ForEach(Directory.GetDirectories(folder), subDir =>
     {
         try
         {
             SearchAndDestroy(subDir);
         }
         catch
         {
             // inaccesible dir.
         }
     });
}