1- Si usas VFP7 o superior, dentro del contenedor de la base de datos le das al boton derecho del mouse y aparecen todos los procedimientos que maneja VFP.
Yo uso el evento dbc_BeforeOpenTables (ver la ayuda) el cual recibe como parametro una tabla y si la ponemos a devolver .f. no se habre la tabla.
ALgo asi
***********
PROCEDURE dbc_BeforeOpenTable(cTableName)
IF ALLTRIM(UPPER(cTableName))=="MITABLA"
IF TYPE("mivariable") = "U" &&No existe esta variable como publica
RETURN .F. &&Al retornar .F. no deja abrir tabla
ENDIF
ENDIF
*********
La idea del codigo anterior es que la variable "mivariable" solo existe en tu sistema como publica, la persona que intente abrir la tabla tendrias que conocer de esa variable.
2- Si quieres trabajar con el registro de windows, chequea esto:
http://www.sopaul.com.ar/cursos/vfoxpro/vfp_api6.htm