>Is there a direct way of determining the startup directory, or does on need to extract it from SYS(16), which includes the file name as well as the path?
LEFT(FULLPATH(SYS(16,0)),RAT('\',FULLPATH(SYS(16,0))) will pull the location of the execuatable or app fired. FULLPATH(CURDIR()) will get the current working directory, if your executable doesn't reside in the startup directory.
If you're starting in a directory that's specified by a UNC, or the executable is referenced without a drive being mapped to the share owning the directory, you'll get back a UNC for both under VFP 5.