Jump to content

windows key


Recommended Posts

Not written by me

Dim $Bin
$Bin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion","DigitalProductID")

InputBox("Product Key", "Your " & @OSVERSION & " product key is:", DecodeProductKey($bin), "", -1, 100, -1, -1)


Func DecodeProductKey($BinaryDPID)
   Local $bKey[15]
   Local $sKey[29]
   Local $Digits[24]
   Local $Value = 0
   Local $hi = 0
   local $n = 0
   Local $i = 0
   Local $dlen = 29
   Local $slen = 15
   Local $Result

   $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789","")

   $binaryDPID = stringmid($binaryDPID,105,30)

   For $i = 1 to 29 step 2
       $bKey[int($i / 2)] = dec(stringmid($binaryDPID,$i,2))
   next

   For $i = $dlen -1 To 0 Step -1
       If Mod(($i + 1), 6) = 0 Then
           $sKey[$i] = "-"
       Else
           $hi = 0
           For $n = $slen -1 To 0 Step -1
               $Value = Bitor(bitshift($hi ,- 8) , $bKey[$n])
               $bKey[$n] = int($Value / 24)
               $hi = mod($Value , 24)
           Next
           $sKey[$i] = $Digits[$hi +1]
       EndIf

   Next
   For $i = 0 To 28
       $Result = $Result & $sKey[$i]
   Next

   Return $Result
EndFunc


Time you enjoyed wasting is not wasted time ......T.S. Elliot
Suspense is worse than disappointment................Robert Burns
God help the man who won't help himself, because no-one else will...........My Grandmother

Link to comment
Share on other sites

Here is another one

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>  & ...
;
; Script Function:
;   Windows XP Information displayed in a GUI
;   with Office-Key (only Office XP or 2003 supported)
;
; ----------------------------------------------------------------------------

#include <GUIConstants.au3>

;GUI
$GUI = GUICreate("Windows Information", 685, 450, 158, 127)

;Labels
$windowsInformation_L = GUICtrlCreateLabel("Windows Information", 8, 8, 659, 25)
$status_L = GUICtrlCreateLabel("Information read out ...", 24, 80, 400, 17)
$description_L = GUICtrlCreateLabel("Description", 16, 112, 103, 17)
$windowsType_L = GUICtrlCreateLabel("WindowsType", 16, 152, 103, 17)
$serialNumber_L = GUICtrlCreateLabel("SerialNumber", 16, 192, 103, 17)
$ProductKey_L = GUICtrlCreateLabel("ProductKey", 16, 232, 103, 17)
$InstallDate_L = GUICtrlCreateLabel("InstallDate", 16, 272, 103, 17)
$LastBootUpTime_L = GUICtrlCreateLabel("LastBootUpTime", 16, 312, 103, 17)
$RegisteredOwner_L = GUICtrlCreateLabel("RegisteredOwner", 16, 352, 103, 17)
$officeKey_L = GUICtrlCreateLabel("OfficeKey", 16, 392, 103, 17)

;Input
$description_I = GUICtrlCreateInput("Description", 130, 112, 389, 21)
$windowsType_I = GUICtrlCreateInput("WindowsType", 130, 152, 389, 21)
$serialNumber_I = GUICtrlCreateInput("SerialNumber", 130, 192, 389, 21)
$ProductKey_I = GUICtrlCreateInput("ProductKey", 130, 232, 389, 21)
$InstallDate_I = GUICtrlCreateInput("InstallDate", 130, 272, 389, 21)
$LastBootUpTime_I = GUICtrlCreateInput("LastBootUpTime", 130, 312, 389, 21)
$RegisteredOwner_I = GUICtrlCreateInput("RegisteredOwner", 130, 352, 389, 21)
$officeKey_I = GUICtrlCreateInput("OfficeKey", 130, 392, 389, 21)

;Groups
$informationPanel_G = GUICtrlCreateGroup("Information Panel", 8, 48, 585, 393)
$status_G = GUICtrlCreateGroup("Status", 14, 64, 553, 41)
$buttins_G = GUICtrlCreateGroup("Buttons", 608, 48, 65, 393)
$office_G = GUICtrlCreateGroup("Microsoft Office", 14, 375, 553, 48)

;Buttons
$exit_B = GUICtrlCreateButton("Exit", 616, 72, 49, 25, 0)
$Description_B = GUICtrlCreateButton("clipboard", 616, 112, 49, 25, 0)
$WindowsType_B = GUICtrlCreateButton("clipboard", 616, 152, 49, 25, 0)
$SerialNumber_B = GUICtrlCreateButton("clipboard", 616, 192, 49, 25, 0)
$ProductKey_B = GUICtrlCreateButton("clipboard", 616, 232, 49, 25, 0)
$InstallDate_B = GUICtrlCreateButton("clipboard", 616, 272, 49, 25, 0)
$LastBootUpTime_B = GUICtrlCreateButton("clipboard", 616, 312, 49, 25, 0)
$registeredOwner_B = GUICtrlCreateButton("clipboard", 616, 352, 49, 25, 0)
$OfficeKey_B = GUICtrlCreateButton("clipboard", 616, 392, 49, 25, 0)

; SetFont
$font = "Comic Sans MS"
GUICtrlSetFont($windowsInformation_L, 16, 400, 4, $font)

;ProgressBar
$progressbar = GUICtrlCreateProgress(140, 75, 400, 25)

;Global variables
Global $product = "" ; Office product Version (XP or 2003)
Global $counter = 3 ; Counter for progressBar
Global $wait = 150 ; Wait for progessBar

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    If $counter = 3 Then
        Sleep(500)
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 2 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 1 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 0 Then
        GUICtrlSetData($status_L, "Ready ...")
        progress()
        $counter -= 1
    ElseIf $counter = -1 Then
        Dim $Bin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductID")
        Dim $key4RegisteredOwner = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
        $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        $colSettings = $objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
        
        For $objOperatingSystem In $colSettings
        Next
        GUICtrlSetData($description_I, StringMid($objOperatingSystem.Description, 1))
        GUICtrlSetData($windowsType_I, '(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
        GUICtrlSetData($serialNumber_I, StringMid($objOperatingSystem.SerialNumber, 1))
        GUICtrlSetData($ProductKey_I, DecodeProductKey($Bin))
        GUICtrlSetData($InstallDate_I, WMIDateStringToDate($objOperatingSystem.InstallDate))
        GUICtrlSetData($LastBootUpTime_I, WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
        GUICtrlSetData($RegisteredOwner_I, RegRead($key4RegisteredOwner, "RegisteredOwner"))
        GUICtrlSetData($officeKey_I, getOfficeKey())
        GUICtrlSetData($officeKey_L, "Office " & $product)
        $counter -= 1
    ElseIf $counter < - 1 Then
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $exit_B
                GUICtrlSetData($status_L, "So long, Mega")
                Sleep(1500)
                ExitLoop
            Case $msg = $Description_B
                ClipPut(StringMid($objOperatingSystem.Description, 1))
                GUICtrlSetData($status_L, "Description copied to clipboard")
            Case $msg = $WindowsType_B
                ClipPut('(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
                GUICtrlSetData($status_L, "WindowsType copied to clipboard")
            Case $msg = $SerialNumber_B
                ClipPut(StringMid($objOperatingSystem.SerialNumber, 1))
                GUICtrlSetData($status_L, "SerialNumber copied to clipboard")
            Case $msg = $ProductKey_B
                ClipPut(DecodeProductKey($Bin))
                GUICtrlSetData($status_L, "ProductKey copied to clipboard")
            Case $msg = $InstallDate_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.InstallDate))
                GUICtrlSetData($status_L, "InstallDate copied to clipboard")
            Case $msg = $LastBootUpTime_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
                GUICtrlSetData($status_L, "LastBootUpTime copied to clipboard")
            Case $msg = $registeredOwner_B
                ClipPut(RegRead($key4RegisteredOwner, "RegisteredOwner"))
                GUICtrlSetData($status_L, "RegisteredOwner copied to clipboard")
            Case $msg = $OfficeKey_B
                ClipPut(getOfficeKey())
                GUICtrlSetData($status_L, "OfficeKey copied to clipboard")
            Case Else
                ;;;;;;;
        EndSelect
    EndIf
WEnd
Exit

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Unknown & Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: Decode REG_BINARY
; ----------------------------------------------------------------------------

Func DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
    
    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $BinaryDPID = StringMid($BinaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
        $bKey[Int($i / 2) ] = Dec(StringMid($BinaryDPID, $i, 2))
    Next
    For $i = $dlen - 1 To 0 Step - 1
        If Mod(($i + 1), 6) = 0 Then
            $sKey[$i] = "-"
        Else
            $hi = 0
            For $n = $slen - 1 To 0 Step - 1
                $Value = BitOR(BitShift($hi, -8), $bKey[$n])
                $bKey[$n] = Int($Value / 24)
                $hi = Mod($Value, 24)
            Next
            $sKey[$i] = $Digits[$hi + 1]
        EndIf
    Next
    For $i = 0 To 28
        $Result = $Result & $sKey[$i]
    Next
    Return $Result
EndFunc   ;==>DecodeProductKey

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Unknown & Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: WMIDateStringToDate (changed Date format)
; ----------------------------------------------------------------------------

Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 7, 2) & "/" & _
            StringMid($dtmDate, 5, 2) & "/" & StringLeft($dtmDate, 4) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc   ;==>WMIDateStringToDate

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: Display a "fake" progressbar at the beginning
; ----------------------------------------------------------------------------

Func progress()
    If $counter = 3 Then
        For $i = 0 To 20 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
    ElseIf $counter = 2 Then
        For $i = 20 To 50 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 1 Then
        For $i = 50 To 80 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 0 Then
        For $i = 80 To 100 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
        GUICtrlSetState($progressbar, $GUI_HIDE)
    EndIf
EndFunc   ;==>progress

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function:Get & decode OfficeKey
; ----------------------------------------------------------------------------

Func getOfficeKey()
    Local $List[1]
    Local $i = 1
    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", "Path")
    If $var <> "" Then
        $product = "2003"
        Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration"
    Else
        $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot", "Path")
        If @error <> 0 Then
            GUICtrlSetData($status_L, "Info: Unable to find installationPath, maybe no Office installed!")
            Return "No Office XP or 2003 found"
        EndIf
        If $var <> "" Then
            $product = "XP"
            Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Registration"
        EndIf
    EndIf
    Dim $var = RegEnumKey($officeKey, $i)
    If @error <> 0 Then
        GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
        Return "No Office XP or 2003 found"
    Else
        $List[$i - 1] = RegRead($officeKey & "\" & $var, "DigitalProductID")
        If $List[$i - 1] = "" Then
            GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
        Else
            $key = $List[$i - 1]
            Return DecodeProductKey($key)
        EndIf
    EndIf
EndFunc   ;==>getOfficeKey


Time you enjoyed wasting is not wasted time ......T.S. Elliot
Suspense is worse than disappointment................Robert Burns
God help the man who won't help himself, because no-one else will...........My Grandmother

Link to comment
Share on other sites

Here's a little modification to the second script posted to prevent errors such as an accidentally pressed key from changing what the key(s) are.

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>  & ...
;
; Script Function:
;   Windows XP Information displayed in a GUI
;   with Office-Key (only Office XP or 2003 supported)
;
; ----------------------------------------------------------------------------

#include <GUIConstants.au3>

;GUI
$GUI = GUICreate("Windows Information", 685, 450, 158, 127)

;Labels
$windowsInformation_L = GUICtrlCreateLabel("Windows Information", 8, 8, 659, 25)
$status_L = GUICtrlCreateLabel("Information read out ...", 24, 80, 400, 17)
$description_L = GUICtrlCreateLabel("Description", 16, 112, 103, 17)
$windowsType_L = GUICtrlCreateLabel("WindowsType", 16, 152, 103, 17)
$serialNumber_L = GUICtrlCreateLabel("SerialNumber", 16, 192, 103, 17)
$ProductKey_L = GUICtrlCreateLabel("ProductKey", 16, 232, 103, 17)
$InstallDate_L = GUICtrlCreateLabel("InstallDate", 16, 272, 103, 17)
$LastBootUpTime_L = GUICtrlCreateLabel("LastBootUpTime", 16, 312, 103, 17)
$RegisteredOwner_L = GUICtrlCreateLabel("RegisteredOwner", 16, 352, 103, 17)
$officeKey_L = GUICtrlCreateLabel("OfficeKey", 16, 392, 103, 17)

;Input
$description_I = GUICtrlCreateInput("Description", 130, 112, 389, 21,$ES_READONLY)
$windowsType_I = GUICtrlCreateInput("WindowsType", 130, 152, 389, 21, $ES_READONLY)
$serialNumber_I = GUICtrlCreateInput("SerialNumber", 130, 192, 389, 21,$ES_READONLY)
$ProductKey_I = GUICtrlCreateInput("ProductKey", 130, 232, 389, 21,$ES_READONLY)
$InstallDate_I = GUICtrlCreateInput("InstallDate", 130, 272, 389, 21,$ES_READONLY)
$LastBootUpTime_I = GUICtrlCreateInput("LastBootUpTime", 130, 312, 389, 21,$ES_READONLY)
$RegisteredOwner_I = GUICtrlCreateInput("RegisteredOwner", 130, 352, 389, 21,$ES_READONLY)
$officeKey_I = GUICtrlCreateInput("OfficeKey", 130, 392, 389, 21,$ES_READONLY)

;Groups
$informationPanel_G = GUICtrlCreateGroup("Information Panel", 8, 48, 585, 393)
$status_G = GUICtrlCreateGroup("Status", 14, 64, 553, 41)
$buttins_G = GUICtrlCreateGroup("Buttons", 608, 48, 65, 393)
$office_G = GUICtrlCreateGroup("Microsoft Office", 14, 375, 553, 48)

;Buttons
$exit_B = GUICtrlCreateButton("Exit", 616, 72, 49, 25, 0)
$Description_B = GUICtrlCreateButton("clipboard", 616, 112, 49, 25, 0)
$WindowsType_B = GUICtrlCreateButton("clipboard", 616, 152, 49, 25, 0)
$SerialNumber_B = GUICtrlCreateButton("clipboard", 616, 192, 49, 25, 0)
$ProductKey_B = GUICtrlCreateButton("clipboard", 616, 232, 49, 25, 0)
$InstallDate_B = GUICtrlCreateButton("clipboard", 616, 272, 49, 25, 0)
$LastBootUpTime_B = GUICtrlCreateButton("clipboard", 616, 312, 49, 25, 0)
$registeredOwner_B = GUICtrlCreateButton("clipboard", 616, 352, 49, 25, 0)
$OfficeKey_B = GUICtrlCreateButton("clipboard", 616, 392, 49, 25, 0)

; SetFont
$font = "Comic Sans MS"
GUICtrlSetFont($windowsInformation_L, 16, 400, 4, $font)

;ProgressBar
$progressbar = GUICtrlCreateProgress(140, 75, 400, 25)

;Global variables
Global $product = "" ; Office product Version (XP or 2003)
Global $counter = 3 ; Counter for progressBar
Global $wait = 150 ; Wait for progessBar

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    If $counter = 3 Then
        Sleep(500)
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 2 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 1 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 0 Then
        GUICtrlSetData($status_L, "Ready ...")
        progress()
        $counter -= 1
    ElseIf $counter = -1 Then
        Dim $Bin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductID")
        Dim $key4RegisteredOwner = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
        $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        $colSettings = $objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
       
        For $objOperatingSystem In $colSettings
        Next
        GUICtrlSetData($description_I, StringMid($objOperatingSystem.Description, 1))
        GUICtrlSetData($windowsType_I, '(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
        GUICtrlSetData($serialNumber_I, StringMid($objOperatingSystem.SerialNumber, 1))
        GUICtrlSetData($ProductKey_I, DecodeProductKey($Bin))
        GUICtrlSetData($InstallDate_I, WMIDateStringToDate($objOperatingSystem.InstallDate))
        GUICtrlSetData($LastBootUpTime_I, WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
        GUICtrlSetData($RegisteredOwner_I, RegRead($key4RegisteredOwner, "RegisteredOwner"))
        GUICtrlSetData($officeKey_I, getOfficeKey())
        GUICtrlSetData($officeKey_L, "Office " & $product)
        $counter -= 1
    ElseIf $counter < - 1 Then
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $exit_B
                GUICtrlSetData($status_L, "So long, Mega")
                Sleep(1500)
                ExitLoop
            Case $msg = $Description_B
                ClipPut(StringMid($objOperatingSystem.Description, 1))
                GUICtrlSetData($status_L, "Description copied to clipboard")
            Case $msg = $WindowsType_B
                ClipPut('(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
                GUICtrlSetData($status_L, "WindowsType copied to clipboard")
            Case $msg = $SerialNumber_B
                ClipPut(StringMid($objOperatingSystem.SerialNumber, 1))
                GUICtrlSetData($status_L, "SerialNumber copied to clipboard")
            Case $msg = $ProductKey_B
                ClipPut(DecodeProductKey($Bin))
                GUICtrlSetData($status_L, "ProductKey copied to clipboard")
            Case $msg = $InstallDate_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.InstallDate))
                GUICtrlSetData($status_L, "InstallDate copied to clipboard")
            Case $msg = $LastBootUpTime_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
                GUICtrlSetData($status_L, "LastBootUpTime copied to clipboard")
            Case $msg = $registeredOwner_B
                ClipPut(RegRead($key4RegisteredOwner, "RegisteredOwner"))
                GUICtrlSetData($status_L, "RegisteredOwner copied to clipboard")
            Case $msg = $OfficeKey_B
                ClipPut(getOfficeKey())
                GUICtrlSetData($status_L, "OfficeKey copied to clipboard")
            Case Else
                ;;;;;;;
        EndSelect
    EndIf
WEnd
Exit

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Unknown & Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: Decode REG_BINARY
; ----------------------------------------------------------------------------

Func DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
   
    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $BinaryDPID = StringMid($BinaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
        $bKey[Int($i / 2) ] = Dec(StringMid($BinaryDPID, $i, 2))
    Next
    For $i = $dlen - 1 To 0 Step - 1
        If Mod(($i + 1), 6) = 0 Then
            $sKey[$i] = "-"
        Else
            $hi = 0
            For $n = $slen - 1 To 0 Step - 1
                $Value = BitOR(BitShift($hi, -8), $bKey[$n])
                $bKey[$n] = Int($Value / 24)
                $hi = Mod($Value, 24)
            Next
            $sKey[$i] = $Digits[$hi + 1]
        EndIf
    Next
    For $i = 0 To 28
        $Result = $Result & $sKey[$i]
    Next
    Return $Result
EndFunc   ;==>DecodeProductKey

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Unknown & Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: WMIDateStringToDate (changed Date format)
; ----------------------------------------------------------------------------

Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 7, 2) & "/" & _
            StringMid($dtmDate, 5, 2) & "/" & StringLeft($dtmDate, 4) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc   ;==>WMIDateStringToDate

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function: Display a "fake" progressbar at the beginning
; ----------------------------------------------------------------------------

Func progress()
    If $counter = 3 Then
        For $i = 0 To 20 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
    ElseIf $counter = 2 Then
        For $i = 20 To 50 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 1 Then
        For $i = 50 To 80 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 0 Then
        For $i = 80 To 100 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
        GUICtrlSetState($progressbar, $GUI_HIDE)
    EndIf
EndFunc   ;==>progress

; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1 beta
; Author:         Thorsten Meger <Thorsten.Meger@gmx.de>
;
; Script Function:Get & decode OfficeKey
; ----------------------------------------------------------------------------

Func getOfficeKey()
    Local $List[1]
    Local $i = 1
    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", "Path")
    If $var <> "" Then
        $product = "2003"
        Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration"
    Else
        $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot", "Path")
        If @error <> 0 Then
            GUICtrlSetData($status_L, "Info: Unable to find installationPath, maybe no Office installed!")
            Return "No Office XP or 2003 found"
        EndIf
        If $var <> "" Then
            $product = "XP"
            Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Registration"
        EndIf
    EndIf
    Dim $var = RegEnumKey($officeKey, $i)
    If @error <> 0 Then
        GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
        Return "No Office XP or 2003 found"
    Else
        $List[$i - 1] = RegRead($officeKey & "\" & $var, "DigitalProductID")
        If $List[$i - 1] = "" Then
            GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
        Else
            $key = $List[$i - 1]
            Return DecodeProductKey($key)
        EndIf
    EndIf
EndFunc   ;==>getOfficeKey

and to helomotorola you would just need to do the decoding backwards (encode) and save it to the registry.

Link to comment
Share on other sites

start->run

%systemroot%\system32\oobe\msoobe.exe /a

XPSP2 has that built in. you can change your key with it.

~cdkid

Edited by cdkid
AutoIt Console written in C#. Write au3 code right at the console :D_FileWriteToLineWrite to a specific line in a file.My UDF Libraries: MySQL UDF Library version 1.6 MySQL Database UDF's for AutoItI have stopped updating the MySQL thread above, all future updates will be on my SVN. The svn location is:kan2.sytes.net/publicsvn/mysqlnote: This will still be available, but due to my new job, and school hours, am no longer developing this udf.My business: www.hirethebrain.com Hire The Brain HireTheBrain.com Computer Consulting, Design, Assembly and RepairOh no! I've commited Scriptocide!
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...