2013-08-02 2 views
14

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. Il est en fait assez surprenant, il n'y a pas construit de façon à le faire ..Création d'un raccourci de fichier (.lnk)

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

Y at-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 dans C#?

Pour être clair, par un raccourci que je veux dire un fichier .lnk qui mène au fichier Edit: Et le fichier que je veux dire un fichier que je veux, non seulement un raccourci vers ma propre application


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

Ajouter ces références:

  1. contrôles Microsoft Shell et l'automatisation
  2. Windows Script Object Model Host

Ajouter cette namespaces:

using Shell32; 
using IWshRuntimeLibrary; 

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

Espérons que cela aide aussi les autres, merci pour votre attention.

Aussi, s'il existe un moyen de créer un fichier, écrivez les bonnes commandes, puis changez-le en un fichier lnk, s'il vous plaît faites le moi savoir.

+0

Est-ce une application WinForms? Si oui, cela pourrait être une question en double http://stackoverflow.com/questions/1501608/how-do-you-create-an-application-shortcut-lnk-file-in-c-sharp-with-command-li Et http://stackoverflow.com/questions/234231/creating-application-shortcut-in-a-directory – user1477388

+0

Voir aussi http://social.msdn.microsoft.com/Forums/windows/fr-FR/e0ac908d-8c33-4d99-88dd-d8d8be77d198/comment-créer-un-deck-icon-pour-exe-fichier-dans-c-windows-application-through-setup – user1477388

+0

Il n'y a pas de nouvelle façon depuis la réponse liée autant que je sache. En posant une question: évitez les balises dans le titre et les «remerciements», n'hésitez pas à discuter sur [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations- être retiré des messages). –

Répondre

13

Une façon de le faire est signalé par Joepro dans their answer here:

Vous aurez besoin d'ajouter une référence COM à Windows Scripting Host. AFAIK, il n'y a aucun moyen .net natif 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 au-dessus, remplacez la première ligne ce qui suit:

WshShell wsh = new WshShell(); 

EDIT: This link can help too

+1

Cela semble être ok, et je l'ai déjà vu .. Je viens d'avoir quelque chose d'autre à l'esprit ... Mais si cela me permet de le faire et il n'y a pas de meilleure façon, je vais essayer d'utiliser Je suppose. – user2599803

+2

De même, "Types d'interopérabilité intégrés" doit être défini sur false lors de la référence de l'hôte de script Windows. Sinon, vous obtiendrez Le type 'IWshRuntimeLibrary.WshShellClass' n'a aucun constructeur défini –

+1

Ajouter une référence> COM> Modèle d'objet hôte de script Windows – Doug

Questions connexes