利用VFP为你的程序加把“锁” 你的应用系统开发完成后，为了检测系统的质量，往往要给一些用户一个试用版，在系统中设置一个试用期，试用期结束后就提示用户注册，同时应用系统也不再运行，这样就能充分保证你的成果不被侵犯、保证开发质量，同时又有助于销售的一种有效手段。注册表功能的使用，可有效地保障这一切。 在我们大量使用的 Windows 9x、NT或更高版本的Windows操作系统中，注册表是保存系统的软硬件配置信息和用户信息的数据库。注册表中的数据决定了它就是Windows操作系统的最核心部件，应用程序都选择在注册表中保存其配置参数。我们当然也可以利用注册表的特性来为应用程序加上使用期限，以保障软件作者的利益。
以下仅以Visual FoxPro的应用程序为例，介绍此类方法。在本例中，我们为这个应用程序添加一个直到2001年4月25日前都可以运行的条件，过了这个日期后，该软件将自动结束并提示用户注册。
我们需要先编写一注册表文本文件(.reg)。
在注册表文本文件的首行必须用命令字符串“REGEDIT”，它的作用是告诉系统调用regedit来完成注册信息的合并工作。接下来的每一行或者代表一个键值的声明，或者是注释性的说明信息。
主键及其默认键值的声明格式的规则是：
根键\一级主键\二级主键\......=默认键值
根据此规则，我们编写了注册表文本文件regdemo.reg，内容为：
REGEDIT4
[HKEY_CURRENT_USER\Software\ljiSoftware\lji]
″enddate″=″2001/4/25″
运行这个.reg文件，enddate的信息即可注册到注册表主键“HKEY_CURRENT_USER\Software\ljiSoftware\lji”中。
然后要为你的应用软件编写一个入口程序，具体内容是：
Clear ALL
CLOSE data
-SCREEN.windowstate=2
SET CENTURY ON
SET DATE TO YMD
*---------------
#DEFINE HKEY_CLASSES_ROOT
_2147483648
#DEFINE HKEY_CURRENT_USER
_2147483647
#DEFINE HKEY_LOCAL_MACHINE
_2147483646
#DEFINE HKEY_USERS
_2147483645
#DEFINE ERROR_SUCCESS
0
*---------------
IF !register()
RETURN .t.
ENDIF
*---------------
FUNCTION register
enddate=''
SET proc to registry
*---------------
frmMyForm = CREATEOBJECT(″registry″)
frmMyForm.init()
enddate=''
frmMyForm.GetRegKey(″enddate″,@enddate,″Software\ljiSoftware\lji″,HKEY-CURRENT-USER)
IF enddate=''
=messsagebox('系统还没有注册',64,'系统提示')
ELSE
=messsagebox'系统使用期限为:'+enddate，64，'系统提示')
ENDIF
SET proc to
IF enddate=''
MESSAGEBOX('您还没有取得系统使用权！'+chr(13)+'请与软件作者联系',0+16,'提示')
RETURN .f.
ELSE
IF date()>ctod(enddate)
MESSAGEBOX('系统使用期限已到！'+chr(13)+'请与软件作者联系',0+16,'提示')
RETURN .f.
ELSE
RETURN .t.
ENDIF
ENDIF
需要注意的是：这里的Registry是一个自定义类库对象，限于篇幅，不在此列出其代码，大家如果感兴趣，可以在Visual FoxPro的安装目录下的\SAMPLE\CLASSES子目录中找到一个名为registry.prg的示例程序。

（李 峰）