I am required to create a Desktop shortcut to a specific folder from within my C# program. I have two requirements.
1) On the Desktop of Current User
2) On the All Users Desktop
Following is the code I used:
WshShellClass WshShell = new WshShellClass();
IWshShortcut MyDesktopShortcut;
MyDesktopShortcut = (IWshShortcut)WshShell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\XYZ.lnk");
MyDesktopShortcut.TargetPath = "C:\\ABC\\XYZ";
MyDesktopShortcut.Description = "Shortcut to " + MyDesktopShortcut.TargetPath;
MyDesktopShortcut.Save();
In order to do that I need to obtain the path to Desktop folder, and in the first case I can easily do that using;
Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
However, I am facing a problem when trying to get the path of the All Users Desktop folder. My program should be able to run on a variety of Windows OS ranging from Windows Server 2003 to Windows 7. As far as I know, the location of All Users Desktop in Vista or above is as follows:
"C:\\Users\\Public\\Desktop\\"
And the location in XP or below is as follows:
"C:\\Documents and Settings\\All Users\\Desktop\\"
Of course I can hard code my program, but I'm looking for a way to acquire the path using some C# method or something similar so as to eliminate obvious possible errors of those paths being changed by users. What can I do?