web-dev-qa-db-fra.com

Création d'un raccourci de fichier (.lnk)

Je cherchais un moyen simple de créer un raccourci vers un fichier en C #, mais je n'ai trouvé que des DLL externes qui le font. C'est en fait assez surprenant, il n'y a aucun moyen de le faire ..

Quoi qu'il en soit, je sais que les fichiers lnk ne sont que des fichiers texte avec une certaine commande et un chemin donné. Je pensais que je pourrais peut-être créer un fichier texte (dans le code) définir son texte à la bonne commande et changer son extension en .lnk J'ai d'abord essayé de le faire manuellement, mais j'ai échoué.

Existe-t-il un moyen de faire quelque chose comme ça (ou peut-être un autre moyen simple) pour créer un raccourci vers un certain chemin en c #?

Juste pour être clair, par raccourci, je veux dire un fichier .lnk qui mène au fichierEdit: Et par fichier, je veux dire n'importe quel fichier que je voudrais, pas seulement un raccourci vers le mien application


Je modifierai si cela ne fonctionne pas bien pour chaque scénario.

Ajoutez ces références:

  1. Contrôles et automatisation du shell Microsoft
  2. Modèle d'objet hôte de script Windows

Ajoutez ces espaces de noms:

using Shell32;
using IWshRuntimeLibrary;

Le suivant semble fonctionner:

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();

J'espère que cela aide aussi les autres, merci de votre attention.

De plus, s'il existe IS un moyen de créer un fichier, écrivez les bonnes commandes, puis changez-le en un fichier lnk, veuillez me le faire savoir.

19
user2599803

Une façon de le faire est indiquée par Joepro dans leur réponse ici :

Vous devrez ajouter une référence COM à l'hôte de script Windows. Pour autant que je sache, il n'existe aucun moyen natif .net de le faire.

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();

Pour .Net 4.0 et supérieur, remplacez la première ligne par ce qui suit:

 WshShell wsh = new WshShell();

EDIT: Ce lien peut aussi aider

15
Danilo Breda