以编程方式创建回收站或其他特殊文件夹的快捷方式

时间:2017-01-24 09:53:09

标签: c# windows-shell desktop-shortcut

我正在尝试创建一个可以创建回收站快捷方式的控制台应用。

我的代码:

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。要自己定位文件,请单击“浏览”。"

2 个答案:

答案 0 :(得分: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 :(得分:3)

将回收站的特殊CLSID指定为TargetPath

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

也无需指定IconLocation。在特殊文件夹的情况下,会自动选择合适的图标。