Как программно удалить ярлык с рабочего стола пользователя? - PullRequest
5 голосов
/ 08 февраля 2012

Как использовать C #, как удалить ярлык с рабочего стола пользователя?

Попробовал безуспешно:

string WinUser = WindowsIdentity.GetCurrent().Name;
WinUser = WinUser.Substring(WinUser.LastIndexOf("\\") + 1);

File.Delete("C:\\Users\\" + WinUser + "\\Desktop\\Touch Data.lnk");

Чего мне не хватает? Ценю любые советы по этому поводу!

Ответы [ 4 ]

12 голосов
/ 08 февраля 2012

Попробуйте следующее:

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
File.Delete(Path.Combine(desktopPath, "Touch Data.lnk"));
3 голосов
/ 08 февраля 2012

У меня была эта проблема в этом вопросе, который я задал:

Почему FolderBrowserDialog не разрешает рабочий стол как SelectedPath, когда RootFolder является MyComputer?

Ответ, который я получил, был следующим:

Видимо, рабочий стол в Win 7 на самом деле не существует по пути

C: \ Users \ имя пользователя \ Desktop

Система делает вид, что делает это в командной строке и в Windows исследователь. Но поскольку его там нет, часть SelectedPath, требует, чтобы его путь находился под RootFolder, запрещает указывать путь в таким образом.

Возможно, это проблема. Вы должны использовать функцию Environment.GetFolderPath, чтобы получить дескриптор на реальном рабочем столе. :)

1 голос
/ 21 июня 2014

У меня был тот же сценарий, в котором я должен был проверить, существует ли ярлык, а затем удалить его. Я использовал следующий код

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if(System.IO.File.Exists(Path.Combine(desktopPath , "shortcut.lnk")))
{
 System.IO.File.Delete(Path.Combine(desktopPath , "shortcut.lnk"));
}
0 голосов
/ 17 мая 2014
System.IO.File.Delete("C:/Users/Public/Desktop/Game.lnk");

:)) win7 стандартное имя пользователя public

...