fecha de termino de un programa visual basic

gerardo
11 de Noviembre del 2004
necesito por favor saber como le puedo colocar una fecha de termino a mis programas hechos en visual basic 6.0, para crear versiones de prueba de 30 dias .

de ante mano muchas gracias.

en?
11 de Noviembre del 2004
hola gerardo, lo que se acostumbra a hacer en estos casos es utilizar el Registro de Widows para guardar la fecha en la que se instaló.

Para esto disponemos de las instrucciónes "SaveSetting", "GetSetting", "GetAllSettings" y "DeleteSetting". Busca la información en la ayuda, verás que són sencillas, es lo mismo que trabajar con ficheros INI.

Un ejemplo podría ser este:

'**************************************************
Private Sub Form_Load()
Dim DiasPrueba As Byte
Dim Fecha As Date

Fecha = LeerEval("Expiración")
If Fecha = "00:00:00" Then
Call GuardarEval(30)
Else
DiasPrueba = LeerEval("DiasPrueba")
Select Case (Date - Fecha)
Case Is < DiasPrueba
If (Date - Fecha) < 0 Then
MsgBox "No está autorizado para utilizar este software", vbCritical
End
End If
MsgBox "Quedan " & DiasPrueba - (Date - Fecha) & " días de evaluación", vbInformation
Case Is = DiasPrueba
MsgBox "Hoy finaliza el periodo de prueba del software", vbExclamation
Case Is > DiasPrueba
MsgBox "El periodo de pruebas finalizó", vbCritical
End
End Select
End If
End Sub

Private Function LeerEval(ByVal Clave As String) As Variant
LeerEval = GetSetting("MiAplicación", "Evaluación", Clave, 0)
End Function

Private Sub GuardarEval(ByVal nDias As Byte)
SaveSetting "MiAplicación", "Evaluación", "Expiración", Date
SaveSetting "MiAplicación", "Evaluación", "DiasPrueba", nDias
End Sub
'**************************************************

Como se ve, se basa en guardar en el Registro de Windows la fecha en la que se ejecutó por primera vez, y el número de días que deseas que esté operativo.

El problema está en que compara la fecha actual con la guardada, y es evidente que cualquiera de nosotros puede hacer un simple programa que cambie la fecha actual, ejecuta la tu aplicación y vuelve a restaurar la fecha, con eso tiene la aplicación operativa para siempre.

Para dificultarle las cosas a usuarios malintencionados puedes leer la fecha de la última vez se ejecutó tu programa:

Dim Fs, MiExe
Dim UltimoAcceso As Date

Set Fs = CreateObject("Scripting.FileSystemObject") 'New FileSystemObject
Set MiExe = Fs.GetFile("c:MiAplicacion.exe")
UltimoAcceso = Aplicacion.DateLastModified
Set MiExe = Nothing
Set Fs = Nothing

Con esto puedes comparar la fecha de UltimoAcceso, y si resulta que se accedió después de la fecha actual, ya sabes que han manipulado la fecha de la máquina y puedes impedir que se ejecute.

Para un usuario normal esto es suficiente, lógicamente para expertos no hay nada 100% fiable. Es por esto que en casos de versiones de evaluación, lo más común es "capar" operatividad a nuestro programa.


Un saludo.