【问题标题】:Delete shortcut from desktop从桌面删除快捷方式
【发布时间】:2013-07-29 20:23:24
【问题描述】:

好吧,我似乎无法从桌面删除一个 lnk 文件。

string pathtoLink = "G:\\Personal Files\\Desktop\\" + appName + ".lnk";
File.SetAttributes(pathtoLink.Trim(), FileAttributes.Normal);
File.Delete(pathtoLink);

do
{
    File.Delete(pathtoLink);
} while (File.Exists(pathtoLink) == true);

上面的代码将进入 do 循环 - 并无限期地循环,它确认文件存在于该位置 - 但根本不会删除!我可以从任何其他位置删除快捷方式没有问题,并且可以删除桌面上的实际文件 - 但 lnk 文件不会移动。

任何关于正在发生的事情的想法将不胜感激。

【问题讨论】:

  • 为什么要使用 do 循环?您可以检查文件是否存在并将其删除并用 try/catch 将其包围以捕获错误
  • 我同意循环是不必要的,但它只解释了为什么它会永远运行,并没有回答为什么它不删除。
  • 循环只是为了确认文件被找到但即使调用delete后也没有被删除,它不会包含在任何解决方案中

标签: c# shortcut delete-file


【解决方案1】:

尝试以下方法:

var desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
var app = appName + ".lnk";
File.Delete(Path.Combine(desktop, app));

【讨论】:

  • 谢谢,但对此并不满意,我刚刚尝试过使用 combine,但它根本没有区别
  • 我注意到虽然 File.Exists 告诉我文件确实存在,但当我尝试将属性更改为正常时(以防在某些时候已被更改) - 抛出异常 - 文件SetAttributes 眼中不存在,但 File.Exists 存在
  • 我唯一能想到的可能是权限问题。您是否尝试过以管理员身份运行您的应用程序?
  • 是的,我确实有,并且我创建了任意数量的普通快捷方式(手动而不是在代码中),SetAttributes 仍然无法看到它或 File.Delete 删除它 - 普通文件很好,快捷方式除了桌面之外的任何其他地方都很好......
  • 我刚刚尝试创建一个简单的 vbscript 来获取桌面位置并删除快捷方式 - 完全没有问题:-S
【解决方案2】:

那些缺少的快捷方式在“所有用户”桌面上,它包含为系统的每个用户显示的快捷方式。

你可以通过

获取到它的路径
Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 2012-02-29
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多