Gå til innhold

Anbefalte innlegg

Heisan folkens.

 

Jeg har laget meg et enkelt antipirat system på mine programmer som fungerer gangks greit. Dette er laget i Clarion og jeg ønsker å benytte dette i VB appene mine også. Står dermed fast på dette med dato og tid. I Clarion er dato og tid utrolig enkelt da de kun er definert som to LONG verdier og jeg kan formatere disse verdiene til en dato streng slilk:

 

MyDate       LONG
MyTime       LONG
MyDateStr   STRING(20)
MyTimeStr   STRING(20)

Dermed har jeg to LONG som representerer dato og klokkeslett. Disse kan jeg sette til dagens dato slik:

MyDate = Today()
MyTime = Clock()

For å vise dato og tid i en streng kan jeg formatere ved bruk av noen PICTURE formater som er definert i Clarion

MyDateStr = Format(MyDate,@D18)   ' @d18 er windows Long date format
MyTimeStr = Format(MyTime,@t1)     ' @t1 = "HH:MM"

Fordelen med dette er at jeg kan regne med dato og tid akkurat som jeg vil da MyDate representerer et vist antall dager siden en dato en gang på 1800 tallet og MyTime representerer antall 100 dels sekunder siden midnatt

 

Derfor:

MyDate += 10   ' MyDate er om 10 dager
MyDate -= 5      ' MyDate er nå kunn om 5 dager
MyDate += 365  ' MyDate er nå dagens dato om et år

I mit antipirat system så lagrer jeg en del verdier i en kryptert fil på følgende måte

if Lisens.next() = FALSE   ' Ingen lisensposter i filen
 Lisens.InstallDato = Today()
 Lisens.SisteKjoringsdato = today()
 Lisens.HDSerial = VolumeSerial
 Lisens.GyldigTil = Today() + 128    ' 128 dager til program må aktiveres
 etc. etc.
else
 if Today() < Lisens.SisteKjoredato or VolumeSerial <> Lisens.HDSerial
   ' Noen har tukla med systemdato eller muligens byttet/formatert harddisk
   Behandle situasjon
 Elsif Today() > (Lisens.GyldigTil - 10)
   ' 10 eller mindre dager til lisensen går ut.  Må håndtere dette
........

Som dere skjønner er jeg rimelig avhengig av dato kalkulering. Noen ide?

 

Ole

Lenke til kommentar
Videoannonse
Annonse

Dato-klassen inkluderer en rekke metoder for manipulering av datoer:

    Public Sub HandleSerial(ByVal File As String)

 

        If Lisens.next() = False Then   ' Ingen lisensposter i filen

            Lisens.InstallDato = Date.Today

            Lisens.SisteKjoringsdato = Date.Today

            Lisens.HDSerial = GetVolumeSerial ' http://www.eggheadcafe.com/articles/20021019.asp

            Lisens.GyldigTil = Date.Today.AddDays(128)    ' 128 dager til program må aktiveres

 

        Else

            If Date.Today < Lisens.SisteKjoredato Or VolumeSerial <> Lisens.HDSerial Then

                ' Noen har tukla med systemdato eller muligens byttet/formatert harddisk

                Behandle(situasjon)

            ElseIf Date.Today > Lisens.GyldigTil.AddDays(-10) Then

                ' 10 eller mindre dager til lisensen går ut.  Må håndtere dette

            End If

        End If

 

    End Sub

Lenke til kommentar

Ahh, strøkent. Dette er hva jeg er ute etter.

 

Men en ting til...

Jeg lagrer jo all denne informasjonen i en egen tekst streng. Derfor må jeg egentlig ha tallverdien av datoen. Jeg kan kansje regne ut denne ved å kalkulere differanse mellom 010101 og den aktuelle dato.

 

Jeg gjør dette fordi jeg da kan kryptere med 3DES som krypterer strenger. Kansje jeg skulle vurdert noe annet her... vi får se

 

takker

Ole

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...