2017-01-24 5 views
2

Ich versuche, eine Konsole App, die Verknüpfung von Papierkorb erstellen erstellen.Programmgesteuert erstellen Sie eine Verknüpfung zum Papierkorb oder andere spezielle Ordner

Mein Code:

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

Es schafft eine "Verknüpfung", aber es ist überhaupt nicht verwendet werden. Eine Meldung erscheint, wenn. Ich versuche, es zu öffnen, die produziert:

"Windows sucht nach recycle.bin. Um Ihre Datei selbst zu suchen, klicken Sie auf Durchsuchen."

+0

Willkommen auf Stack Overflow. Bitte entfernen Sie den [Danke im Voraus] (http://meta.stackoverflow.com/questions/288160/no-thanks-damn-it) Teil. –

+1

Woran denken Sie also, dass der Papierkorb eine eigenständige Datei mit dem Namen 'Recycle.Bin' ist? Sie wissen, dass in Windows eine Einstellung zum Anzeigen des Papierkorbs auf dem Desktop vorhanden ist? – CodeCaster

+0

Ich habe bereits meinen Papierkorb sichtbar, aber was ist Ihr Punkt? Vielleicht habe ich Ihre Antwort missverstanden .. – JustAScrubbie

Antwort

3

Geben Sie das spezielle CLSID des Papierkorbs als TargetPath:

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

Es gibt auch keine Notwendigkeit, IconLocation angeben. Das entsprechende Icon wird bei speziellen Ordnern automatisch ausgewählt.

3

Wenn Sie eine Verknüpfung erstellen möchten, die spezielle Ordner öffnet, müssen Sie eine Verknüpfung erstellen, um explorer.exe und pass the appropriate GUID mit einem doppelten Doppelpunkt als Argument vorangestellt:

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

Sie haben nicht einmal müssen die explorer.exe als Ziel zur Verfügung zu stellen, können Sie die GUID direkt ausrichten können:

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

Alternativ können Sie nur enable the display of the Recycle Bin on the desktop instead.

+1

Es besteht keine Notwendigkeit, einen Link zu Explorer Exe zu verwenden. Sie können die spezielle CLSID direkt als 'TargetPath' verwenden. Siehe meine Antwort. – NineBerry

+0

@Nine Ich sehe, bearbeitet, danke. – CodeCaster

+0

Vielen Dank Kumpel sehr geschätzt! – JustAScrubbie

Verwandte Themen