lcfile = GETFILE('EXE') lcicon = GETFILE('ico') DECLARE INTEGER FindDesktopFolder IN LNKFILES.DLL; INTEGER hOwner, STRING @lpbuffer lcbuffer = SPACE(260) ? FindDesktopFolder(0, @lcbuffer) && Returns 41 lcdesktop = LEFT(lcbuffer, 41) lcshortcut = ADDBS(lcdesktop) + "Test.lnk" DECLARE INTEGER CreateShellLink IN LNKFILES.DLL; STRING @lpzLinkFileName, STRING @lpzExeFileName ? CreateShellLink(@lcshortcut, @lcfile) && Returns 0 DECLARE INTEGER SetLinkWorkDir IN LNKFILES.DLL; INTEGER hWnd, STRING @lpszLinkName, STRING @lpszPath ? SetLinkWorkDir(0, @lcshortcut, JUSTPATH(lcfile)) && Returns 1 but the directory is set appropriately DECLARE INTEGER SetLinkIconFile IN LNKFILES.DLL; INTEGER hWnd, STRING @lpszLinkName,; STRING @lpszPath, INTEGER iIconIndex ? SetLinkIconFile(0, @lcshortcut, @lcicon, 0) Returns 0I really don't have any plans for updating or modifying the file as I now use the Windows Script Host to create and modify short cuts.