I've written a simple FTP based file synchronization program. The settings of which can be stored in an XML file. I want users to be able to quickly open the program using various configurations. So I set up the program to be able to read the path to a config file through command line argument. This way shortcuts can be created on the desktop based on different config files. Now I'm trying to add a feature that will automatically create the shortcut for a specific config file.
I've tried using the example from this post using ShellLink.cs. And I've also tried using IWshRuntimeLibrary as described here. I'm able to create the shortcut, but the "Target Type" of the shortcut in the properties window ends up being blank in the new shortcut. If I double click the shortcut I get an error window from windows about it having problems finding FooBar.xml at the path provided. So it seems like it doesn't realize that it should be starting an application not opening a file.
Now, if I open the properties of the new shortcut and change something in the target field, and then change it back. For example delete the x from xml and then just add it back. After click OK the icon of the shortcut immediately switches to the icon of my app, and works correctly when double clicked.
So it appears that when I edit the shortcut manually it forces windows to check if the shortcut target type should be Application and switches it.
So how can I, through C#, create a new shortcut with a target type of Application when the target path does not end with .exe?