Avatar billede dranzer Nybegynder
28. august 2006 - 21:10 Der er 11 kommentarer og
1 løsning

Aktivering af demo version hjælp! flere Point på.

Hejza. Jeg Har haft det her oppe før. :) Men der fik jeg ikke hjælp så jeg gav tråden op. Men nu kan jeg se at Bruger nielle her på Eksperten.dk har skrevet til mig og lave noget og det takker jeg jo for og beklager at jeg ikke fik svaret.

Jeg ved ikke helt hvordan jeg skal lave det. Fordi når jeg åbner programmet så siger den at det er en demo også skriver den i Registreringsdatabasen. Og det skal den jo ik. Det skulle jo være sådan at man skrev i nøgle ind i en tekst box også trykket på aktiver også fik man og se om den ville aktiver.

Inde man aktiverdet den så skulle den komme med Du køre en demo version som den også gør. Har lidt brug for hjælp får ikke fejl. Min anden tråd er her. http://www.eksperten.dk/spm/716939

Jeg lave en ny tråd med nogen fler Point for at håbe og få svar. ;)


koden fra nielle :=)

Imports Microsoft.Win32

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TjekForAktivering()

        AktiverProgram("716939")
    End Sub

    ' Tjek for aktivering

    Private Sub TjekForAktivering()
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        Dim aktiveringNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE\nielle")

        If aktiveringNøgle Is Nothing Then
            DemoBesked()
        Else
            Dim aktiveringNøgleVærdi As String = aktiveringNøgle.GetValue("nøgle")
            If aktiveringNøgleVærdi Is Nothing Then
                DemoBesked()
            Else
                If Not ValiderAktivering(aktiveringNøgleVærdi) Then
                    DemoBesked()
                End If
            End If
        End If
    End Sub

    Private Function ValiderAktivering(ByVal nøgleVærdi As String) As Boolean
        If nøgleVærdi = "716939" Then
            Return True
        Else
            Return False
        End If
    End Function

    Private Sub DemoBesked()
        MessageBox.Show("Du køre en demo version")
    End Sub

    ' Opret aktivering

    Private Sub AktiverProgram(ByVal nøgleVærdi As String)
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        Dim softwareNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE", True)
        Dim aktiveringNøgle As RegistryKey = softwareNøgle.CreateSubKey("nielle")

        aktiveringNøgle.SetValue("nøgle", nøgleVærdi)
    End Sub

End Class
Avatar billede johnstigers Seniormester
28. august 2006 - 21:13 #1
LUkker du så ikke lige http://www.eksperten.dk/spm/716939 ?
Avatar billede dranzer Nybegynder
28. august 2006 - 21:43 #2
er gjort.
Avatar billede nielle Nybegynder
29. august 2006 - 08:51 #3
For min skyld kunne vi da sagtens have fortsat i det oprindelige spørgsmål?!

Under alle omstændigtheder synes jeg godt at du kunne have lagt en eller anden reaktion der, i stedet for blot at oprette et nyt spørgsmål uden hverken buh-eller-bæh i det gamle. Om ikke andet, ville det have været på sin plads at skrive et lille tak, spørge om uddybning eller at fortælle hvad det var der ikke var godt nok med den foreslåede løsning...

Denne kategori fungere normalt efter princippet hjælp-til-selvhjælp, og du kan derfor ikke forvente at du får serveret grydeklare løsninger her. Hvis det var det du er ude efter, ville det nok være mere relevant at oprette dit spørgsmpål under "Opgaver" næste gang:

http://www.eksperten.dk/spm/Opgaver/Programmeringsopgaver/Andre/

"hjælp-til-selvhjælp" betyder kort sagt at du selv er blevet klogere på programmering bagefter. Men det kræver at du deltager aktivt. :^)
Avatar billede nielle Nybegynder
29. august 2006 - 08:51 #4
... og lad os så se på dit problem!

Jeg gjorde med vilje mit kodeeksempel så simpelt som muligt for at det ikke skulle være mikset op med en masse andet kode, som ikke var direkte relevant for problemstillingen.

1) Funktionen TjekForAktivering() tjekker om programmet er registreret eller ej. Dette gør den ved at kikke i reg-databasen efter om der eksistere en nøgle (med navnet "nøgle") under mappen

TjekForAktivering() går desuden brug af yderligt to funktioner ValiderAktivering() og DemoBesked().

1a) Funktioen ValiderAktivering() tjekker om det er den korrekte aktiverings-nøgle.

1b) Funktionen DemoBesked() udskriver bare en "nag-besked".

2) Funktionen AktiverProgram() aktivere programmet.

Jeg har lavet lidt om på programmet, og lagt kommentarer ind. Prøv at se om du kan forstå koden, og lad os så tage den derfra:

===== Restruktureret kode =====

Imports Microsoft.Win32

Public Class Form1

    ' Aktiveringsmappen. Du kan selvfølgelig ændre den til noget andet.
    Private Const aktiveringsMappe As String = "nielle"

    ' Aktiveringsnøglen. Du kan selvfølgelig ændre den til noget andet.
    Private Const aktiveringsNøgleNavn As String = "nøgle"
    Private Const aktiveringsNøgleVærdi As String = "728949"

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TjekForAktivering()
        AktiverProgram()
    End Sub

    ' Tjek for aktivering.
    Private Sub TjekForAktivering()
        ' Åbn mappen "\\HKEY_LOCAL_MACHINE".
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        ' Åbn undermappen "SOFTWARE\nielle" ... hvis den findes.
        Dim aktiveringNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE\" & aktiveringsMappe)

        If aktiveringNøgle Is Nothing Then
            ' Den fantes ikke ...
            DemoBesked() ' ... udskriv besked.
        Else
            ' Den fantes.

            ' Læs værdien af nøglen med navn "nøgle" ... hvis den findes.
            Dim læsteAktiveringsNøgleVærdi As String = aktiveringNøgle.GetValue(aktiveringsNøgleNavn)
            If læsteAktiveringsNøgleVærdi Is Nothing Then
                ' Den fantes ikke ...
                DemoBesked() ' ... udskriv besked.
            Else
                ' Den fantes.

                ' Tjek om værdien af den er korrekt.
                If Not ValiderAktivering(læsteAktiveringsNøgleVærdi) Then
                    DemoBesked() ' Det var ikke den rigtige værdi ... udskriv besked.
                End If
            End If
        End If
    End Sub

    ' Hjælpefunktion til TjekForAktivering().
    Private Function ValiderAktivering(ByVal læsteAktiveringsNøgleVærdi As String) As Boolean
        If læsteAktiveringsNøgleVærdi = aktiveringsNøgleVærdi Then
            Return True
        Else
            Return False
        End If
    End Function

    ' Hjælpefunktion til TjekForAktivering().
    Private Sub DemoBesked()
        MessageBox.Show("Du kører en demo version.")
    End Sub

    ' Opret aktivering.
    Private Sub AktiverProgram()
        ' Åbn mappen "\\HKEY_LOCAL_MACHINE".
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        ' Åbn undermappen "SOFTWARE" med skriverettigheder.
        Dim softwareNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE", True)

        ' Opret undermappen "nielle".
        Dim aktiveringsNøgle As RegistryKey = softwareNøgle.CreateSubKey(aktiveringsMappe)

        ' Opret en aktiveringsnøgle i mappen "nielle", med det korrekte navn og den korrekte værdi.
        aktiveringsNøgle.SetValue(aktiveringsNøgleNavn, aktiveringsNøgleVærdi)
    End Sub

End Class

===== Restruktureret kode =====


PS: Hvis du ikke lige er klar over det, kan du følge med i hvad der sker i reg-databasen vha. programmet regedit. Men vær omhyggelig hvis du bruger dette til at redigere i din reg-database!
Avatar billede dranzer Nybegynder
29. august 2006 - 09:41 #5
Sorry. Men jeg har altså skrevet tak for din hjælp og beklager at jeg ikke fik svart.

Hejza. Jeg Har haft det her oppe før. :) Men der fik jeg ikke hjælp så jeg gav tråden op. Men nu kan jeg se at Bruger nielle her på Eksperten.dk har skrevet til mig og lave noget og det takker jeg jo for og beklager at jeg ikke fik svaret.

Du har måske bare ikke læst det. :) Men tak for det. Jeg vil lige kikke på det. ;)
Avatar billede dranzer Nybegynder
29. august 2006 - 10:15 #6
Jeg har totalt forstået kode nu. :)

Det er lykkes for mig at sætte en knap ind i kode ude at få fejl i den. Så kan man gå ind og trykke på en knap også aktiver den, den. :) Men det jeg så ikke kan finde ud af, er at jeg har en tekst boks og den skal man skrive den rigtige kode ind som er: 728949

Hvis den er forkert skrevt ind eller ikke skrevet ind så vil den ikke aktiver når man trykker på knappe. Det er det jeg ikke kan komme vidre med. Ellers så kan jeg godt finde ud af det andet. ;)
Avatar billede nielle Nybegynder
29. august 2006 - 10:20 #7
29/08-2006 09:41:22> Du har takket og beklaget her i dette spørgsmål, men hvis websam ikke havde så flink at gøre mig opmærksom på - i det gamle spørgsmål - at du havde oprettet dette her i stedet, så havde jeg jo aldrig set det. Det havde været mere reelt at takke i det oprindelige spørgsmål.
Avatar billede nielle Nybegynder
29. august 2006 - 10:26 #8
Denne variation af koden beder om en registrerings nøgne:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TjekForAktivering()

        Dim foreslåetAktiveringsNøgleVærdi As String = InputBox("Indtast din registringsnøgle")
        foreslåetAktiveringsNøgleVærdi = foreslåetAktiveringsNøgleVærdi.Trim()

        If foreslåetAktiveringsNøgleVærdi = aktiveringsNøgleVærdi Then
            AktiverProgram()
        Else
            MessageBox.Show("Aktiveringsnøglen var ikke korrekt.")
        End If
    End Sub
Avatar billede nielle Nybegynder
29. august 2006 - 10:40 #9
I stedet for at TjekForAktivering() åbner popup'en, laves den om til en funktion som returnere sandt eller falsk alt efter om programmet er registreret. Derefter bruger du InputBox() til at bede om input:

Imports Microsoft.Win32

Public Class Form1

    ' Aktiveringsmappen. Du kan selvfølgelig ændre den til noget andet.
    Private Const aktiveringsMappe As String = "nielle2"

    ' Aktiveringsnøglen. Du kan selvfølgelig ændre den til noget andet.
    Private Const aktiveringsNøgleNavn As String = "nøgle"
    Private Const aktiveringsNøgleVærdi As String = "728949"

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim registreret As Boolean = TjekForAktivering()

        If Not registreret Then
            If MessageBox.Show("Du kører en demoversion. Ønsker du at registrere den?", "Demoversion", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = System.Windows.Forms.DialogResult.OK Then
                Dim foreslåetAktiveringsNøgleVærdi As String = InputBox("Indtast din registringsnøgle:")
                foreslåetAktiveringsNøgleVærdi = foreslåetAktiveringsNøgleVærdi.Trim()

                If foreslåetAktiveringsNøgleVærdi = aktiveringsNøgleVærdi Then
                    AktiverProgram()
                Else
                    MessageBox.Show("Aktiveringsnøglen var ikke korrekt.")
                End If
            End If
        End If
    End Sub

    ' Tjek for aktivering. Returnere True hvis programmet er registreret, ellers False.
    Private Function TjekForAktivering() As Boolean
        ' Åbn mappen "\\HKEY_LOCAL_MACHINE".
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        ' Åbn undermappen "SOFTWARE\nielle" ... hvis den findes.
        Dim aktiveringNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE\" & aktiveringsMappe)

        If aktiveringNøgle Is Nothing Then
            ' Den fantes ikke ...
            Return False
        Else
            ' Den fantes.

            ' Læs værdien af nøglen med navn "nøgle" ... hvis den findes.
            Dim læsteAktiveringsNøgleVærdi As String = aktiveringNøgle.GetValue(aktiveringsNøgleNavn)
            If læsteAktiveringsNøgleVærdi Is Nothing Then
                ' Den fantes ikke ...
                Return False
            Else
                ' Den fantes.

                ' Tjek om værdien af den er korrekt.
                If Not ValiderAktivering(læsteAktiveringsNøgleVærdi) Then
                    Return False ' Det var ikke den rigtige værdi ... udskriv besked.
                End If
            End If

            Return True    ' Nøglen fantes, og den var korrekt.
        End If
    End Function

    ' Hjælpefunktion til TjekForAktivering().
    Private Function ValiderAktivering(ByVal læsteAktiveringsNøgleVærdi As String) As Boolean
        If læsteAktiveringsNøgleVærdi = aktiveringsNøgleVærdi Then
            Return True
        Else
            Return False
        End If
    End Function

    ' Opret aktivering.
    Private Sub AktiverProgram()
        ' Åbn mappen "\\HKEY_LOCAL_MACHINE".
        Dim localMachineNøgle As RegistryKey = Registry.LocalMachine

        ' Åbn undermappen "SOFTWARE" med skriverettigheder.
        Dim softwareNøgle As RegistryKey = localMachineNøgle.OpenSubKey("SOFTWARE", True)

        ' Opret undermappen "nielle".
        Dim aktiveringsNøgle As RegistryKey = softwareNøgle.CreateSubKey(aktiveringsMappe)

        ' Opret en nøgle i mappen, med det korrekte navn og den korrekte værdi.
        aktiveringsNøgle.SetValue(aktiveringsNøgleNavn, aktiveringsNøgleVærdi)
    End Sub

End Class
Avatar billede dranzer Nybegynder
29. august 2006 - 13:35 #10
Hejza nu har jeg lavet lidt om her

If Not registreret Then
            If MessageBox.Show("Du kører en demoversion. Ønsker du at registrere den?", "Demoversion", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = System.Windows.Forms.DialogResult.OK Then
                Dim foreslåetAktiveringsNøgleVærdi As String = InputBox("Indtast din registringsnøgle:")
                foreslåetAktiveringsNøgleVærdi = foreslåetAktiveringsNøgleVærdi.Trim()

                If foreslåetAktiveringsNøgleVærdi = aktiveringsNøgleVærdi Then
                    AktiverProgram()
                    MsgBox("Tak for din Aktivering.", MsgBoxStyle.Information, "Aktiveret")
                    Form2.Show()
                Else
                    MsgBox("Forkert Produk Nøgle.", MsgBoxStyle.Exclamation, "Forkert Produkt Nøgle")
                End If

Så har jeg lavet lidt om på msg boksnen. Så har jeg sagt til den at hvis den bliver aktivert så skal den åbne Form2 og altid Form 2: Form2.Show()  og det gør den. Men den åbner også Form1 op og det skal den jo ikke. Den skal kun åbne Form1 når det er en demo. :) Det er det sidst problem jeg har så har jeg det jeg skal bruge, også får du dit point og er totalt vildt glad for din hjælp nielle. :=) Har prøvet med: Form1.Close() men der mælder den fejl:

MsgBox("Tak for din Aktivering.", MsgBoxStyle.Information, "Aktiveret")
Form2.Show()
Form1.Close()

Else

Takker. ;)
Avatar billede dranzer Nybegynder
29. august 2006 - 13:42 #11
Det er lige meget skal ikke have mere hjælp. Det hele vil nu. :) Send et svar. ;) og takker :)
Avatar billede nielle Nybegynder
29. august 2006 - 14:30 #12
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester