[C#] Erstellen einer Desktopverknüpfung

WhiteGandalf

Mitglied
Hi zusammen!


Ich möchte eine Verknüpfung zu einer .exe auf dem Desktop erstellen. Dazu nutze ich folgenden Code...

Code:
string deskDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

WshShell shell = new WshShell();
IWshShortcut link = (IWshShortcut)shell.CreateShortcut(deskDir + "\\Test.lnk");
link.TargetPath = "C:\\TestOrdner\\abc.exe";
link.Save();


...was auch wunderbar funktioniert. Wenn ich jetzt allerdings den ersten Teil von TargetPath, also "C:\\TestOrder" durch einen simplen string ersetze...


Code:
string deskDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
string s = "C:\\TestOrdner";

WshShell shell = new WshShell();
IWshShortcut link = (IWshShortcut)shell.CreateShortcut(deskDir + "\\Test.lnk");
link.TargetPath = s + "\\abc.exe";
link.Save();


...funktioniert das ganze nicht mehr. Compilieren klappt zwar, bei der Ausführung erscheint dann aber jedes Mal der Fehler: "Der Wert liegt außerhalb des erwarteten Bereichs."


Dieses Problem beschäftigt mich nun schon seit einigen Tagen, denn ich schreibe ein Installationsprogramm und der Pfad (hier: "C.\\TestOrdner") muss natürlich vom Benutzer gewählt werden können.
Ich glaube ich habe mittlerweile das halbe Internet durchgelesen ... leider scheint niemand sonst dieses Problem zu haben.

Ich würde mich sehr freuen, wenn mir jemand helfen könnte! :)
 
Alles klar, mit Path.Combine funktionierts super!

Aber warum muss ich diesen Umweg nehmen und kann nicht einfach einen normalen String benutzen?

Vielen Dank für die Hilfe! :)
 
Path.Combine ist kein Umweg sondern der direkte Weg.
Du musst dir keine Gedanken darüber machen, welches Zeichen als Path-Seperator genutzt wird und das wichtigste Thema die Verwaltung von String-Objekten ist in diesem Fällen besser.
Erklärung findest du bei der StringBuilder-Klasse http://msdn.microsoft.com/de-de/library/system.text.stringbuilder(VS.80).aspx
Ich hab jetzt keine Reflector hier um nachzuschauen, aber ich glaube, die wird auch innerhalb dieser Methode genutzt
 

Neue Beiträge

Zurück