c# - Creando un atajo de archivo(.lnk)
automation shortcut (1)
He estado buscando una forma sencilla de crear un acceso directo a un archivo en C #, pero solo he encontrado archivos DLL externos que hacen eso. En realidad es bastante sorprendente, no hay una forma integrada de hacer eso ...
De todos modos, sé que los archivos lnk son solo archivos de texto con un determinado comando y una ruta determinada. Pensé que tal vez podría crear un archivo de texto (en el código) establecer su texto en el comando correcto y cambiar su extensión a .lnk He intentado hacerlo manualmente primero, pero no lo hice.
¿Hay una manera de hacer algo así (o quizás otra forma simple) para crear un acceso directo a un determinado camino en c #?
Para que quede claro, con acceso directo me refiero a un archivo .lnk que conduce al archivo. Editar: Y por archivo quiero decir cualquier archivo que quisiera, no solo un acceso directo a mi propia aplicación
Lo editaré si no funciona bien para cada escenario.
Añade estas referencias:
- Controles y automatización de shell de Microsoft
- Modelo de objetos de Windows Script Host
Añade este espacio de nombres:
using Shell32;
using IWshRuntimeLibrary;
El siguiente parece estar funcionando:
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();
Espero que ayude a otros también, gracias por su atención.
Además, si hay una forma de crear un archivo, escriba los comandos correctos y luego cámbielo a un archivo lnk, por favor hágamelo saber.
Una forma de hacer esto es señalada por Joepro en su respuesta aquí :
Tendrá que agregar una referencia COM a Windows Scripting Host. Que yo sepa, no hay una forma nativa de .net para hacer esto.
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();
Para .Net 4.0 y superior, reemplace la primera línea con lo siguiente:
WshShell wsh = new WshShell();
EDITAR: Este enlace puede ayudar también