ist bestimmt für einige von uns hier interessant.

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
c ya,
nco2k