Yo pienso que algo así, encriptando, ocultando, etc, ... puede ser mas que suficiente:
Option Explicit
Dim FechaDia As Date
Private Sub Form_Load()
FechaDia = Date
If ErrorFecha Then GoTo FechaMal
'...
'...
Exit Sub
FechaMal:
End
End Sub
Private Sub cmdCierre_Click()
Dim Canal As Integer
Canal = FreeFile
Open App.Path & "\Cierre.txt" For Output As #Canal
Print #Canal, FechaDia
Close #Canal
End Sub
Private Function ErrorFecha()
' Devuelve Verdadero si Archivo no existe o FechaDia es menor a último cierre
' Podría comparar con >= pero así permite mas cierres en el mismo día
'On Error GoTo ForzarError
Dim Canal As Integer, FechaCierre As String
Canal = FreeFile
Open App.Path & "\Cierre.txt" For Input As #Canal
Input #Canal, FechaCierre
Close #Canal
If CDate(FechaCierre) > FechaDia Then ErrorFecha = True
Exit Function
ForzarError:
ErrorFecha = True
End Function
Como puede verse, el boton de CIERRE DE CAJA, actualiza la fecha del último cierre.
Si la fecha del sistema es anterior el programa no se iniciará, siempre cabe la opción de FORZAR la fecha del sistema con la del último cierre y así no das pistas de porque no se inicia el programa.
No es mas que la opcion propuesta por seba123neo aplicada sin afectar para nada a la base de datos que tengamos definida.
Otra opción algo mas 'escondida' pero que utilizaría el mismo truco sería modificar la fecha del Ejecutable en lugar de crear un archivo, después podrías comparar de la misma manera la fecha del ejecutable y obrar en consecuencia.
Saludos