1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| Imports System.ComponentModel
Public Class Form1
Dim Mavaleur As String
Dim chemin As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Mavaleur = "Continuer"
'ouverture clé
My.Computer.Registry.CurrentUser.OpenSubKey("Rodrigue")
'lecture valeur
Mavaleur = CStr(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Rodrigue", "RodrigueValue", ToString))
If Mavaleur = "Terminer" Then
MessageBox.Show("Période d'essai terminée! fermeture de l'application!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
Mavaleur = "Terminer"
Me.Hide()
Form2.Show()
End If
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
'création clé
My.Computer.Registry.CurrentUser.CreateSubKey("Rodrigue")
'ajout valeur.
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Rodrigue",
"RodrigueValue", Mavaleur)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim aCount As Integer = 0
Dim loopIt As Boolean = True
'My.Settings.Reset() 'Ceci est ici pour le soutien de la conception ... sinon vous ne recevrez pas votre application pour l'exécuter encore
Do While loopIt
MessageBox.Show(String.Format("Vérification de date: {0}.", Date.Now.AddDays(aCount)), "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
loopIt = CheckDate(Date.Now.AddDays(aCount))
If Not loopIt Then
MessageBox.Show("Période d'essai terminée! fermeture de l'application!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
Mavaleur = "Terminer"
Me.Hide()
Form2.Show()
Else
MessageBox.Show("Vous pouvez continuer à utiliser l'application", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
Mavaleur = "Continuer"
Exit Sub
End If
aCount += 1
Loop
End Sub
Private Function CheckDate(ByVal dateToCheck As Date) As Boolean
'En réalité, checkdate obtiendrait la date (date actuelle) elle-même et ne pas l'avoir adoptée en
Dim retValue As Boolean = False 'par défaut à false
Dim usageDatesLeft As Int16 = 30 ' réglez ce paramètre sur le nombre de jours + 1 d'accès aux applications
'Hash the date
Dim hashedDate As String = HashDate(dateToCheck)
'Vérifiez si la valeur de hachage existe dans les UsageDates
'Initialiser le récipient si nécessaire
If My.Settings.UsageDates Is Nothing Then
My.Settings.UsageDates = New System.Collections.Specialized.StringCollection
End If
If My.Settings.UsageDates.Contains(hashedDate) Then
'Alors nous sommes ok ... il a déjà été vérifié
retValue = True
usageDatesLeft = CShort(usageDatesLeft - My.Settings.UsageDates.Count)
'Bilan de santé d'esprit ... si la date système est sauvegardé à une date précédente dans la liste, mais pas a la dernière date
If usageDatesLeft <= 0 AndAlso My.Settings.UsageDates.IndexOf(hashedDate) <> My.Settings.UsageDates.Count - 1 Then
retValue = False
End If
Else
If My.Settings.UsageDates.Count < usageDatesLeft Then
My.Settings.UsageDates.Add(hashedDate)
End If
usageDatesLeft = CShort(usageDatesLeft - My.Settings.UsageDates.Count)
'Si non, ajouter le nombre de jours ouverts
If usageDatesLeft > 0 Then
retValue = True
Else
'Si non dites a l'utilisateur, l'application de sortie
retValue = False
End If
End If
'Affiche à l'utilisateur le nombre de jours restant
MessageBox.Show(String.Format("Vous avez {0} jour (s) restant.", usageDatesLeft), "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
If usageDatesLeft = 0 Then
retValue = False
End If
Return retValue
End Function
Private Function HashDate(ByVal dateToHash As Date) As String
'Obtenez un objet de hachage
Dim hasher As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
' faire une date longue et hacher
Dim data As Byte() = hasher.ComputeHash(System.Text.Encoding.Default.GetBytes(dateToHash.ToLongDateString()))
'Créer un nouveau StringBuilder pour recueillir les octets;
'Et créer une chaîne.
Dim sBuilder As New System.Text.StringBuilder()
'Boucle dans chaque octet de données haché;
'Et formater chacun comme une chaîne hexadécimale.
Dim idx As Integer
For idx = 0 To data.Length - 1
sBuilder.Append(data(idx).ToString("x2"))
Next idx
Return sBuilder.ToString
End Function
End Class |
Partager