我有这个小工具,我正在努力帮助管理另一个应用程序的菜单。我需要这个工具来复制快捷方式文件,就像任何其他文件一样。不幸的是,它会复制每个文件,但文件扩展名为.lnk。有谁知道为什么?我似乎无法找到任何相关信息。我不是从零开始创建快捷方式,而是复制现有的快捷方式。我已经尝试过FileInfo.CopyTo()和File.Copy()方法。它实际上复制文件,然后抛出异常,这真的很奇怪。如果我用try..catch包装它...(在catch中没有任何内容)那么它似乎可以使用一些例外,它们中的一些会丢失它们的快捷方式图标。并不是说它可能有多大帮助,但这是我的代码的要点:
DirectoryInfo destinationDirectory= new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
string temppath = Path.Combine(destinationDirectory.FullName, sourceFile.Name);
sourceFile.CopyTo(temppath.FullName, true);
答案:
感谢Alireza指出我正确的方向。这就是我最终做的事情:
DirectoryInfo destinationDirectory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
FileInfo shortcut = sourceFile.Directory.GetFiles("*.lnk").FirstOrDefault(f => f.Name == sourceFile.Name) as FileInfo;
if (shortcut != null)
{
File.Copy(shortcut.FullName, Path.Combine(destinationDirectory.FullName, shortcut.Name), true);
}
答案 0 :(得分:1)
这应该有效:
var shortcuts = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
.GetFiles("*.lnk");
string destFolder = destinationDirectory.FullName;
foreach(var f in shortcuts)
File.Copy(f.FullName, Path.Combine(destFolder,f.Name));