This is a method I got from MSDN using the VBstkit.dll - I've included it in my Application (in a form method) so everyt time it runs it creates it's own shortcut.
I've modified it a bit, If you want the original, search the MS site (can't remember the URL)
******* CODE BELOW ************
* Heavily cut down version of the microsoft download example
* CREATE DESKTOP SHORTCUT- using shell api fCreateShellLink
lcExeName = "MYEXE.exe" && *~ lcExeName: This is the actual file name (without any path) of the .EXE to create a shortcut to.
lcAppName = "MY EXE NAME" &&*~ lcAppName: This is the name of the application (like "Microsoft Visual FoxPro"

.
*~ Declare the function in the VB DLL
DECLARE INTEGER fCreateShellLink IN vb6stkit.DLL ;
STRING lpstrFolderName, ;
STRING lpstrLinkName, ;
STRING lpstrLinkPath, ;
STRING lpstrLinkArguments, ;
INTEGER fPrivate, ;
STRING sParent
*~ Set up variables. These variables remain unchanged.
strLinkPath = JUSTPATH(SYS(16,0)) + "\" + lcExeName + CHR(0) && path of current running app
strLinkName = "Shortcut to " + ALLT(lcAppName)
strLinkArguments = "" + CHR(0)
fPrivate = -1
strGroupName = "..\..\Desktop"
sParent = "$(Programs)"
lnSuccess = fCreateShellLink(strGroupName, ;
strLinkName, ;
strLinkPath, ;
strLinkArguments, ;
fPrivate, ;
sParent)
&& error checking removed - just doesn't create shortcut - no message to say yes or no
******* END OF CODE **********
mrF