免费下载应用软件、交流使用经验。

软件下载 经验交流 软件开发 专题论述 请君留言 网站介绍 休闲时光 返回主页
 
表文件加锁的小程序

作者:本人     来源:本站

许多坛友热衷于保护表文件的保密,为了满足各位的需要,完成之前作出的承诺,这两天忙里偷闲完成了下面的小程序。
这段程序主要是通过改写表文件的前16个字节的内容,以便让VFP系统认为“不是一个表”而拒绝打开,从而达到保密数据的目的。由于仅仅是对表文件头进行处理,后面的数据未作任何改动,所以我称之为“加锁”而非“加密”。
特别说明:
1、这段程序虽然经过测试能正常使用,但因为存在电脑意外中断运行的情况,有可能会损坏表文件。请各位在加锁或解锁前最好作好备份,以备不测。
2、表文件解锁后可以在VFP系统下正常打开,此时是无密可保的。请各位再配合修改表文件后缀名的方式来防范非法访问。

******************************************************
*                 DBFLOCK.PRG                        *
******************************************************
*  这是一个利用改写文件头对DBF表加锁的程序,加锁之后 *
* DBF表就不能正常打开,相当于加了一把锁。            *
******************************************************
*  调用参数(C):文件名(含后缀名)                   *
*  返回参数(L):T=操作成功,F=未找到指定的文件       *
*  调用方法: DO DBFLOCK WITH "文件全名",L           *
*             L=.T.表示加锁                          *
*             L=.F.表示解锁                          *
******************************************************
*  程序编制者:HUJJ      2013.2                      *
******************************************************

PARAMETERS cFileName,lCmd

IF FILE(SYS(5)+SYS(2003)+cFileName)                &&查找是否存在指定的文件
   MESSAGEBOX("没有找到指定的文件!",48,"操作错误")
   RETURN .f.
ENDIF

nFid = FOPEN(cFileName,2)                          &&打开指定的文件
IF nFid = -1
   MESSAGEBOX("指定的文件正在被使用,请先关闭文件再操作!",48,"操作错误")
   RETURN .f.                                      &&打开文件失败,返回失败标志
ENDIF

cTxt=FREAD(nFid,32)                                &&读入文件头32字节的内容

nAsc=ASC(cTxt)                                     &&取首字节ASC码以确定原文件是否已经加过锁
IF nAsc=0 AND lCmd
   FCLOSE(nFid)                                    &&关闭文件
   RETURN .T.                                      &&已经是加过锁的表文件,直接返回
ENDIF 
IF nAsc>0 AND !lCmd
   FCLOSE(nFid)                                    &&关闭文件
   RETURN .T.                                      &&已经是已经解锁的表文件,直接返回
ENDIF 

cTxt=RIGHT(cTxt,16)+cTxt                           &&交换内容后再写回文件,完成加锁或解锁。
FSEEK(nFid,0,0)
FWRITE(nFid,cTxt,32)
FCLOSE(nFid)                                       &&关闭文件
RETURN .t.                                         &&返回成功标志

注:

发表日期:2013-2-20     修改日期:

备案序号:赣ICP备05002359号

建议使用1024*768分辩率浏览 ☆版权所有 摘抄或转载须得到书面许可☆ Hujiajun ©1999,2016
E-Mail: hu-jj@21cn.com