2017-01-24 2 views
2

Я пытаюсь создать консольное приложение, которое создаст ярлык корзины.Программно создать ярлык для корзины или других специальных папок

Мой код:

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
object shDesktop = (object)"Desktop"; 
WshShell shell = new WshShell(); 
string shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + @"\Recycle Bin.lnk"; 
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress); 
shortcut.Description = "New shortcut for Recycle Bin"; 
shortcut.Hotkey = "Ctrl+Shift+N"; 
shortcut.IconLocation = @"C:\WINDOWS\System32\imageres.dll"; 
shortcut.TargetPath = Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\Recycle.Bin"; 
shortcut.Save(); 

Это создает «Ярлык», но это не использовать вообще. Сообщение появляется, когда. Я пытаюсь открыть его, который производит:

«Windows ищет recycle.bin. Чтобы найти свой файл, нажмите кнопку« Обзор ».

+0

Добро пожаловать на переполнение стека. Пожалуйста, remoe [спасибо заранее] (http://meta.stackoverflow.com/questions/288160/no-thanks-damn-it). –

+1

Итак, что заставляет вас думать, что корзина является автономным файлом под названием «Recycle.Bin»? Вы знаете, что в Windows есть настройка отображения корзины на рабочем столе? – CodeCaster

+0

У меня уже есть моя корзина, но какая у вас проблема? Возможно, я неправильно понял ваш ответ. – JustAScrubbie

ответ

3

Укажите специальный CLSID из корзины в TargetPath:

IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress); 
shortcut.TargetPath = "::{645ff040-5081-101b-9f08-00aa002f954e}"; 
shortcut.Save(); 

Там также нет необходимости указывать IconLocation. Соответствующий значок выбирается автоматически в случае специальных папок.

3

Если вы хотите создать ярлык, который открывает специальные папки, необходимо создать ярлык для Explorer.exe и pass the appropriate GUID приставки с двойным двоеточием в качестве аргумента:

string explorerExePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "explorer.exe"); 
shortcut.TargetPath = explorerExePath; 
shortcut.Arguments = "::{645FF040-5081-101B-9F08-00AA002F954E}"; 

Вы даже не необходимо предоставить explorer.exe в качестве цели, вы можете настроить таргетинг на GUID непосредственно:

shortcut.TargetPath = "::{645FF040-5081-101B-9F08-00AA002F954E}"; 

в качестве альтернативы, вы можете просто enable the display of the Recycle Bin on the desktop instead.

+1

На самом деле нет необходимости использовать ссылку на explorer exe. Вы можете использовать специальный CLSID непосредственно как «TargetPath». См. Мой ответ. – NineBerry

+0

@ Ничего, я вижу, отредактировал, спасибо. – CodeCaster

+0

Спасибо, много поделился! – JustAScrubbie

Смежные вопросы