是否可以使用 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.
}
});
}
所以我分发了一个软件(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.
}
});
}