2013-08-02 18 views
14

Ho cercato un modo semplice per creare un collegamento a un file in C#, ma ho trovato solo dll esterni che lo fanno. In realtà è piuttosto sorprendente, non c'è modo per farlo.Creazione di un collegamento file (.lnk)

In ogni caso, so che i file di lnk sono solo file di testo con un determinato comando e un determinato percorso. Ho pensato che forse avrei potuto creare un file di testo (nel codice) impostare il testo sul comando corretto e modificarne l'estensione in .lnk Ho provato a farlo manualmente prima, ma non ci sono riuscito.

C'è un modo per fare qualcosa del genere (o forse un altro modo semplice) per creare un collegamento a un determinato percorso in C#?

Giusto per essere chiari, dal collegamento intendo un file .lnk che porta al file Edit: E con il file intendo qualsiasi tipo di file che vorrei, non solo una scorciatoia per la mia propria applicazione


Modificherò se non funziona bene per ogni scenario.

Aggiungere questi riferimenti:

  1. Controlli Microsoft Shell e Automazione
  2. Windows Script Host Object Model

Aggiungere questo namespace:

using Shell32; 
using IWshRuntimeLibrary; 

successivo sembra funzionare:

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

Spero che aiuti anche gli altri, grazie per la vostra attenzione.

Inoltre, se esiste un modo per creare un file, scrivere i comandi corretti e quindi modificarlo in un file lnk, per favore fatemelo sapere.

+0

Si tratta di un'applicazione WinForms? In tal caso, questa potrebbe essere una domanda duplicata http://stackoverflow.com/questions/1501608/how-do-you-create-an-application-shortcut-lnk-file-in-c-sharp-with-command-li E http://stackoverflow.com/questions/234231/creating-application-shortcut-in-a-directory – user1477388

+0

Inoltre, vedere questo http://social.msdn.microsoft.it/Forum/windows/it-it/e0ac908d-8c33-4d99-88dd-d8d8be77d198/how-to-create-a-decktop-icon-per-exe-file-in-c-windows-application-through-setup – user1477388

+0

Non c'è un modo più nuovo dopo la risposta collegata, per quanto ne so. Sulla domanda: evita i tag nel titolo e gli "ringraziamenti", sentiti libero di discutere su [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations- essere-rimozione dal messaggi). –

risposta

13

Un modo per fare questo è sottolineato da Joepro in their answer here:

Avrai bisogno di aggiungere un riferimento COM a Windows Scripting Host. AFAIK, non esiste un modo nativo .net per farlo.

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

for .NET 4.0 e versioni successive, sostituire la prima linea con il seguente:

WshShell wsh = new WshShell(); 

EDIT: This link can help too

+1

Questo sembra essere ok, e ho già visto questo .. Ho appena avuto qualcos'altro in mente ... Ma se questo mi permette di farlo e non c'è modo migliore, cercherò di usare credo. – user2599803

+2

Anche "Incorpora tipi di interoperabilità" deve essere impostato su falso quando si fa riferimento a Windows Scripting Host. In caso contrario, il tipo "IWshRuntimeLibrary.WshShellClass" non ha alcun costruttore definito –

+1

Aggiungi riferimento> COM> Modello oggetto host script di Windows – Doug

Problemi correlati