clear ? GetSpecialFolderName('APPDATA') ? GetSpecialFolderName('LOCALAPPDATA') ? GetSpecialFolderName('COMMONAPPDATA') ? GetSpecialFolderName('COMMON') ? GetSpecialFolderName('COMMONDOCUMENTS') procedure GetSpecialFolderName Lparameters tcFolderIdentifier #Define CSIDL_APPDATA 0x001a #Define CSIDL_LOCAL_APPDATA 0x001c #DEFINE CSIDL_COMMON_APPDATA 0x0023 && All Users\Application Data #DEFINE CSIDL_PROGRAM_FILES_COMMON 0x002b && C:\Program Files\Common #define CSIDL_COMMON_DOCUMENTS 0x002e && All Users\Documents #Define SHGFP_TYPE_CURRENT 0 && current value for user, verify it exists #Define SHGFP_TYPE_DEFAULT 1, && default value, may not exist #Define CSIDL_FLAG_CREATE 0x8000 && create folder if not there #Define MAX_PATH 267 Declare Integer SHGetFolderPath In 'shell32.dll' ; integer hwndOwner, ; integer nFolder, ; integer hToken, ; integer dwFlags, ; string @ pszPath tcFolderIdentifier = Upper(Trim(Evl(m.tcFolderIdentifier,''))) Return GetFolderLocation(; ICASE( ; m.tcFolderIdentifier == 'APPDATA', CSIDL_APPDATA, ; m.tcFolderIdentifier == 'LOCALAPPDATA', CSIDL_LOCAL_APPDATA, ; m.tcFolderIdentifier == 'COMMONAPPDATA', CSIDL_COMMON_APPDATA, ; m.tcFolderIdentifier == 'COMMON', CSIDL_PROGRAM_FILES_COMMON, ; m.tcFolderIdentifier == 'COMMONDOCUMENTS', CSIDL_COMMON_DOCUMENTS, ; CSIDL_PERSONAL ), .T.) Function GetFolderLocation(tnCSIDL,tlCreate) Local pszPath pszPath = Replicate(Chr(0),MAX_PATH) If (m.tlCreate) tnCSIDL = m.tnCSIDL + CSIDL_FLAG_CREATE Endif Return Iif ( ShGetFolderPath(0,m.tnCSIDL,0,SHGFP_TYPE_CURRENT, @pszPath ) = 0, ; Left(pszPath,At(Chr(0),pszPath)-1), ; '') endfuncCetin