Ergebnis 1 bis 8 von 8
  1. #1
    Capt'n Crunch Avatar von hackerking
    Registriert seit
    08.11.2008
    Beiträge
    964

    Standard [VB.NET] Windows Key auslesen 64Bit Problem

    Jo Hey Leute...
    Hab ein kleines Problem mit dem Windows Key.
    Also ich lese ihn so aus:

    Code:
        Public Function WindowsProductKey() As String
            Dim RegKey As RegistryKey = _
            Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion", False)
            Dim bytDPID() As Byte = RegKey.GetValue("DigitalProductID")
            Dim bytKey(14) As Byte
            Array.Copy(bytDPID, 52, bytKey, 0, 15)
            Dim strChar As String = "BCDFGHJKMPQRTVWXY2346789"
            Dim strKey As String = ""
            For j As Integer = 0 To 24
                Dim nCur As Short = 0
                For i As Integer = 14 To 0 Step -1
                    nCur = CShort(nCur * 256 Xor bytKey(i))
                    bytKey(i) = CByte(Int(nCur / 24))
                    nCur = CShort(nCur Mod 24)
                Next
                strKey = strChar.Substring(nCur, 1) & strKey
            Next
            For i As Integer = 4 To 1 Step -1
                strKey = strKey.Insert(i * 5, "-")
            Next
            RegKey.Close()
            Return strKey
        End Function
    Das klappt auch perfekt, jedoch nur wenn die erstellte Anwendung in 64Bit läuft. Also nicht im Virtelluellen 32 Bit Mode...
    Wenn ich die Exe als 32 Bit erstelle klappt auch alles, nur liefert die Variable bytDPID() Nothing zurück. Aber als 64Bit anwendung funktioniert es perfket.

    Was ist da der unterschied?

  2. #2
    Behindikindi Avatar von Variable X
    Registriert seit
    22.07.2009
    Beiträge
    399

    Standard

    Das problem hatte ich auch mal mit Delphi

    Das liegt daran, das Registry daten in 64bit teilweise wo anderst gespeichert werden als bei 32bit systemen

    Du musst quasi schauen wo er in einem 32 bit system gespeichert wird.

    Und dann würd ich einfach beide auslesen lassen und schauen welcher ein ergebnis beinhaltet und den dann nehmen ^^

    Aber wo das was du auslesen willst in nem 32 bit system ist musst du selebr rausfinden google hilft aber ebstimmt da öfters solche sachen auftreten


    Edit:\ Ich guck grad selber mal ob das stimmt was ich heir grad gesagt habe xD ^^


    Edit2:\ Hab jetzt nichts gefunden scheint anscheinend hier nicht ganz zu stimmen :/
    Geändert von Variable X (05.08.2009 um 14:08 Uhr)

  3. #3
    Crew mitglied der Code883 Avatar von sunny-boy3
    Registriert seit
    02.01.2009
    Beiträge
    162

    Standard

    Mach doch einfach eine catsh o as exeption variable wen der eine ein error gibt dan wird der andere ausgelesen

    das sieht an so aus :

    'deine 64 bit variable:

    Public Function WindowsProductKey64bit() As String
    Try
    Dim RegKey As RegistryKey = _
    Registry.LocalMachine.OpenSubKey("Software\Microso ft\Windows NT\CurrentVersion", False)
    Dim bytDPID() As Byte = RegKey.GetValue("DigitalProductID")
    Dim bytKey(14) As Byte
    Array.Copy(bytDPID, 52, bytKey, 0, 15)
    Dim strChar As String = "BCDFGHJKMPQRTVWXY2346789"
    Dim strKey As String = ""
    For j As Integer = 0 To 24
    Dim nCur As Short = 0
    For i As Integer = 14 To 0 Step -1
    nCur = CShort(nCur * 256 Xor bytKey(i))
    bytKey(i) = CByte(Int(nCur / 24))
    nCur = CShort(nCur Mod 24)
    Next
    strKey = strChar.Substring(nCur, 1) & strKey
    Next
    For i As Integer = 4 To 1 Step -1
    strKey = strKey.Insert(i * 5, "-")
    Next
    RegKey.Close()
    Return strKey
    End Function
    catsh oAs exeption
    'deine32bit variable
    call 32bit

    Private Sub 32bit
    blablabla
    End Sub
    Geändert von sunny-boy3 (05.08.2009 um 14:31 Uhr)

  4. #4
    Capt'n Crunch Avatar von hackerking
    Registriert seit
    08.11.2008
    Beiträge
    964

    Standard

    Ja ok aber wo liegt denn der andere Key oO?

  5. #5
    Crew mitglied der Code883 Avatar von sunny-boy3
    Registriert seit
    02.01.2009
    Beiträge
    162

    Standard

    Zitat Zitat von hackerking Beitrag anzeigen
    Ja ok aber wo liegt denn der andere Key oO?
    Den 64 bit haste doch oder nicht ????

    Den 32 bit schlüßel auszulesen ist doch nicht das problem das bekommste auf jeder source seite spitz


    Hier ein link für den 32 bit schlüßel
    http://www.visual-basic5.de/vbclassi...productkey.htm

    die source funktioniert wunderbar um den key bei der 32 bit version auszulesen deine variable klappt für die 64 also alles palettie änder das was du nicht brauchst und setz es dan in der private sub 32bit
    Geändert von sunny-boy3 (05.08.2009 um 14:37 Uhr)

  6. #6
    Capt'n Crunch Avatar von hackerking
    Registriert seit
    08.11.2008
    Beiträge
    964

    Standard

    Das ist genau der gleiche Path -.-
    Code:
    "Software\Microsoft\Windows NT\CurrentVersion"

  7. #7
    Gesperrt
    Registriert seit
    25.11.2008
    Beiträge
    196

    Standard

    es ist der gleiche Pfad? geht es denn den 32bit auszulesen mit der source?

  8. #8
    Capt'n Crunch Avatar von hackerking
    Registriert seit
    08.11.2008
    Beiträge
    964

    Standard

    mein problem lag an falschen CPU-Build Einstellugnen bei Visual Studio...
    Geändert von hackerking (12.08.2009 um 13:53 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •