所以我分发了一个软件(Patcher.exe)。我们现在需要将Patcher.exe重命名为SystemPatcher.exe。
但是,我们希望尽量减少(如果不是完全避免)快捷方式问题。
要这样做...我想创建一个新的C#程序,命名与原始的Patcher.exe相同,并让它搜索&删除指向Patcher.exe的所有快捷方式。然后,它将在用户桌面上创建一个新的SystemPatcher.exe快捷方式,并通知他们更改。
我可以做最后一点,但我的问题是我不知道是否可以在用户计算机上搜索指向Patcher.exe的所有快捷方式并删除它们。
这可能吗?有没有人知道如何在C#中实现这一目标?
P.S没有旧的Patcher.exe只是启动SystemPatcher.exe不是一个选项(由于某种原因导致其他软件出现问题)。
答案 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.
}
});
}