(Win32) Windows XP CD Key anzeigen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

(Win32) Windows XP CD Key anzeigen

Beitrag von nco2k »

ich bin im englischen forum, auf folgenden code gestossen, welcher es ermöglicht die seriennummer von windows xp anzeigen zu lassen.

ist bestimmt für einige von uns hier interessant. :wink:

Code: Alles auswählen

;**************************************
; Name: View Windows XP CD Key
; Description:Function: sGetXPCDKey() wi
;     ll Return the CD Key For Windows XP in t
;     he format XXXXX-XXXXX-XXXXX-XXXXX-XXXXX.
;
; By: Snytax
;
; Inputs:Nothing.
;
; Returns:Your Windows XP CD Key.
;
;This code is copyrighted And has' limited warranties.Please see http://w
;     ww.Planet-Source-Code.com/vb/scripts/Sho
;     wCode.asp?txtCodeId=57164&lngWId=1'For details.'**************************************
;
;sGetXPCDKey() -
;Returns the Windows XP CD Key If succes
;     sful.
;Returns nothing upon failure.

Procedure.s sGetXPCDKey()

  ;Read the value of:
  ;HKLM\SOFTWARE\MICROSOFT\Windows NT\Curr
  ;     entVersion\DigitalProductId
  *bDigitalProductID = AllocateMemory(164)
  *bProductKey.b = AllocateMemory(15)
  ilByte.l
  lDataLen.l
  hKey.l
  ;Open the registry key: HKLM\SOFTWARE\MI
  ;     CROSOFT\Windows NT\CurrentVersion
  If RegOpenKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", @hKey) = #ERROR_SUCCESS
    lDataLen = 164
    ;ReDim Preserve bDigitalProductID(lDataLen)
    ;Read the value of DigitalProductID

    If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
      ;Get the Product Key, 15 bytes long, off
      ;     set by 52 bytes

      For ilByte = 52 To 66
        Byte.l = PeekB(*bDigitalProductID + ilByte) & 255
        PokeB(*bProductKey + ilByte - 52, Byte)
      Next ilByte
      RegCloseKey_(hKey)
    Else
      ;ERROR: Could not Read "DigitalProductID
      RegCloseKey_(hKey)
      ProcedureReturn ""
    EndIf
  Else
    ;ERROR: Could not open "HKLM\SOFTWARE\MI
    ;     CROSOFT\Windows NT\CurrentVersion"
    ProcedureReturn ""
  EndIf
  ;Now we are going To 'base24' decode the
  ;     Product Key
  Dim bKeyChars.l(23)
  ;Possible characters in the CD Key:
  bKeyChars(0) = Asc("B")
  bKeyChars(1) = Asc("C")
  bKeyChars(2) = Asc("D")
  bKeyChars(3) = Asc("F")
  bKeyChars(4) = Asc("G")
  bKeyChars(5) = Asc("H")
  bKeyChars(6) = Asc("J")
  bKeyChars(7) = Asc("K")
  bKeyChars(8) = Asc("M")
  bKeyChars(9) = Asc("P")
  bKeyChars(10) = Asc("Q")
  bKeyChars(11) = Asc("R")
  bKeyChars(12) = Asc("T")
  bKeyChars(13) = Asc("V")

  bKeyChars(14) = Asc("W")
  bKeyChars(15) = Asc("X")
  bKeyChars(16) = Asc("Y")
  bKeyChars(17) = Asc("2")
  bKeyChars(18) = Asc("3")
  bKeyChars(19) = Asc("4")
  bKeyChars(20) = Asc("6")
  bKeyChars(21) = Asc("7")
  bKeyChars(22) = Asc("8")
  bKeyChars(23) = Asc("9")
  nCur.l
  sCDKey.s
  ilKeyByte.l
  ilByte.l
  Byte.l
  For ilByte = 24 To 0 Step -1
    ;Step through each character in the CD k
    ;     ey
    nCur = 0
    For ilKeyByte = 14 To 0 Step -1
      ;Step through each byte in the Product K
      ;     ey
      Byte = PeekB(*bProductKey + ilKeyByte) & 255
      nCur = ((nCur & 255) * 256) ! Byte
      PokeB(*bProductKey + ilKeyByte, (Int(nCur / 24)))
      nCur = nCur % 24
    Next ilKeyByte
    sCDKey = Chr(bKeyChars(nCur)) + sCDKey
    If ilByte % 5 = 0 And ilByte <> 0
      sCDKey = "-" + sCDKey
    EndIf
  Next ilByte
  ProcedureReturn sCDKey

EndProcedure


Debug sGetXPCDKey()
End
der ursprüngliche VB code stammt von Snytax und wurde von HeX0R für PB übersetzt.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.