Подтвердить что ты не робот

Создание ярлыка файла (.lnk)

Я искал простой способ создать ярлык для файла на С#, но я нашел только внешние DLL, которые это делают. Это на самом деле довольно удивительно, там нет встроенного способа сделать это.

В любом случае, я знаю, что файлы lnk - это просто текстовые файлы с определенной командой и заданным путем. Я подумал, что, возможно, я мог бы создать текстовый файл (в коде), чтобы установить текст в нужную команду и изменить его расширение на .lnk Сначала я попытался сделать это вручную, но не смог этого сделать.

Есть ли способ сделать что-то подобное (или, может быть, еще один простой способ) создать ярлык для определенного пути в С#?

Просто, чтобы быть ясным, по Shortcut я имею в виду файл .lnk, который ведет к файлу Edit: И по файлу я имею в виду любой файл, который я хочу, а не только ярлык для моего собственного приложения


Я отредактирую, если это не сработает для каждого сценария.

Добавьте эти ссылки:

  • Microsoft Shell Controls and Automation
  • Windows Script Модель объекта хоста

Добавьте это пространство имен:

using Shell32;
using IWshRuntimeLibrary;

Далее, похоже, работает:

var wsh = new IWshShell_Class();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\shorcut2.lnk") as IWshRuntimeLibrary.IWshShortcut;
shortcut.TargetPath = @"C:\Users\Zimin\Desktop\test folder";            
shortcut.Save();

Надеюсь, это поможет и другим, спасибо за внимание.

Кроме того, если есть способ создать файл, напишите правильные команды, а затем измените его на файл lnk, сообщите мне.

4b9b3361

Ответ 1

Один из способов сделать это указал Joepro в их ответе здесь:

Вам нужно будет добавить ссылку COM на Windows Scripting Host. Насколько я знаю, для этого нет родного.net-способа.

WshShellClass wsh = new WshShellClass();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\shorcut.lnk") as IWshRuntimeLibrary.IWshShortcut;
shortcut.Arguments = "";
shortcut.TargetPath = "c:\\app\\myftp.exe";
// not sure about what this is for
shortcut.WindowStyle = 1; 
shortcut.Description = "my shortcut description";
shortcut.WorkingDirectory = "c:\\app";
shortcut.IconLocation = "specify icon location";
shortcut.Save();

Для.Net 4.0 и выше замените первую строку следующим образом:

 WshShell wsh = new WshShell();

EDIT: эта ссылка может помочь