2013-08-02 11 views
14

Szukałem prostego sposobu na utworzenie skrótu do pliku w języku C#, ale znalazłem tylko zewnętrzne biblioteki DLL, które to robią. To naprawdę zaskakujące, nie ma wbudowanego sposobu, aby to zrobić.Tworzenie skrótu pliku (.lnk)

W każdym razie wiem, że pliki LKN są po prostu plikami tekstowymi z określonym poleceniem i podaną ścieżką. Pomyślałem, że może mógłbym utworzyć plik tekstowy (w kodzie) ustawić tekst na właściwe polecenie i zmienić jego rozszerzenie na .lnk Próbowałem to zrobić ręcznie, ale nie udało mi się tego zrobić.

Czy istnieje sposób na zrobienie czegoś takiego (lub może inny prosty sposób), aby utworzyć skrót do określonej ścieżki w języku C#?

Wystarczy być jasne, poprzez skrót znaczy plik .lnk, która prowadzi do pliku Edit: I po pliku Znaczy każdy plik chciałbym, nie tylko skrót do własnej aplikacji


Będę edytować, jeśli nie działa dobrze dla każdego scenariusza.

Dodaj te nazwy:

  1. formantów Microsoft Shell i Automatyzacji
  2. Windows Script Host Object Model

dodać to przestrzenie nazw:

using Shell32; 
using IWshRuntimeLibrary; 

Następny wydaje się pracować:

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

Mam nadzieję, że pomaga również innym, dzięki za uwagę.

Ponadto, jeśli istnieje sposób na utworzenie pliku, napisz odpowiednie polecenia, a następnie zmień je na plik lnk, proszę dać mi znać.

+0

Jest to aplikacja WinForm? Jeśli tak, może to być zduplikowane pytanie http://stackoverflow.com/questions/1501608/how-do-you-create-an-application-shortcut-lnk-file-in-c-sharp- with-command-li Oraz http://stackoverflow.com/questions/234231/creating-application-shortcut-in-a-directory – user1477388

+0

Zobacz także http://social.msdn.microsoft.com/Forums/windows/en-US/e0ac908d-8c33-4d99-88dd-d8d8be77d198/how-to-create-a-decktop-icon-for-exe-file-in-c-windows-application-through-setup – user1477388

+0

Nie ma nowszej drogi od czasu odpowiedzi, o ile wiem. Zadając pytanie: unikaj tagów w tytule i "dziękuję", możesz dyskutować na temat [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations- be-removed-from-posts). –

Odpowiedz

13

Jednym ze sposobów, aby to zrobić, to wskazał Joepro w their answer here:

Musisz dodać odwołanie COM do Windows Scripting Host. AFAIK, nie ma natywnej metody .net, aby to zrobić.

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

dla .NET 4.0 i powyżej, wymienić pierwszą linię z następujących czynności:

WshShell wsh = new WshShell(); 

EDIT: This link can help too

+1

To wydaje się być ok, i już to widziałem .. Po prostu miałem na myśli coś innego ... Ale jeśli to pozwoli mi to zrobić i nie ma lepszego sposobu, spróbuję użyć to chyba. – user2599803

+2

Również "Embed Interop Types" powinno być ustawione na false podczas odwoływania się do Windows Scripting Host. W przeciwnym razie pojawi się Typ 'IWshRuntimeLibrary.WshShellClass' nie ma zdefiniowanych konstruktorów. –

+1

Dodaj odwołanie> COM> Windows Host Host Model Model – Doug