&& To make exe readonly attribute LCFILE=curdir()+"ACCOUNTS.EXE" #DEFINE FILE_ATTRIBUTE_READONLY 0x01 #DEFINE FILE_ATTRIBUTE_HIDDEN0x02 #DEFINE FILE_ATTRIBUTE_SYSTEM0x04 #DEFINE FILE_ATTRIBUTE_DIRECTORY0x10 #DEFINE FILE_ATTRIBUTE_ARCHIVE0x20 #DEFINE FILE_ATTRIBUTE_NORMAL0x80 #DEFINE FILE_ATTRIBUTE_TEMPORARY0x0100 DECLARE INTEGER GetLastError IN WIN32API DECLARE LONG SetFileAttributes IN WIN32API STRING FileName, LONG FileAttributes DECLARE LONG GetFileAttributes IN WIN32API STRING FileName DECLARE INTEGER FormatMessage IN WIN32API INTEGER flags,; INTEGER notused,; INTEGER error,; INTEGER locale,; STRING @buffer,; INTEGER bufsize,; INTEGER notused lnFileAttributes = GetFileAttributes (LCFILE) IF lnFileAttributes = -1 nLastError=GetLastError() cError=SPACE(255) =FormatMessage(4096,0,nLastError,0,@cError,255,0) cError = ALLTRIM(STRTRAN(cError,CHR(0))) WAIT WINDOW 'Error #: '+ALLTRIM(STR(nLastError))+CHR(13)+'Error Msg: '+cError RETURN .F. ENDIF IF SetFileAttributes (LCFILE, BITOR(lnFileAttributes,FILE_ATTRIBUTE_READONLY)) = 0 nLastError=GetLastError() cError=SPACE(255) =FormatMessage(4096,0,nLastError,0,@cError,255,0) cError = ALLTRIM(STRTRAN(cError,CHR(0))) WAIT WINDOW 'Error #: '+ALLTRIM(STR(nLastError))+CHR(13)+'Error Msg: '+cError RETURN .F. ENDIF