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

时间:2017-07-14 20:40:26

标签: c# windows shortcuts

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

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

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

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

这可能吗?有没有人知道如何在C#中实现这一目标?

P.S没有旧的Patcher.exe只是启动SystemPatcher.exe不是一个选项(由于某种原因导致其他软件出现问题)。

1 个答案:

答案 0 :(得分:1)

您可以使用您的用户权限迭代所有.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.
         }
     });
}