Scripting Retrieval of Office & Windows Product Keys
The following scripts will work on Windows 2000 & higher, and only Office 2003 to find the product keys and create a text document with the product name & product key.
Create the following 2 .vbs files to, modifying the lines in bold to point to the shared drive you want to dump the results, and then create a batch files with the following lines:
cscript x:\scripts\windowskey.vbs
cscript x:\scripts\officekey.vbs
Have your login script run this batch file upon login and have your users log off and back on to create the text documents with the product keys.
Save this file as office.vbs
Public Function sGetXPCDKey()
Dim bDigitalProductID
Dim bProductKey()
Dim bKeyChars(24)
Dim ilByte
Dim nCur
Dim sCDKey
Dim ilKeyByte
Dim ilBit
ReDim Preserve bProductKey(14)
Set objShell =
CreateObject("WScript.Shell")
bDigitalProductID = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration\{91110409-6000-11D3-8CFE-0150048383C9}\DigitalProductID")
Set objShell =
Nothing
For ilByte = 52 To 66
bProductKey(ilByte - 52) =
bDigitalProductID(ilByte)
Next
'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")
For ilByte = 24
To 0 Step -1
nCur = 0
For ilKeyByte = 14 To 0 Step -1
'Step through each byte in the Product Key
nCur = nCur * 256 Xor
bProductKey(ilKeyByte)
bProductKey(ilKeyByte) = Int(nCur / 24)
nCur = nCur Mod 24
Next
sCDKey = Chr(bKeyChars(nCur)) & sCDKey
If ilByte Mod 5 = 0 And ilByte <> 0 Then sCDKey = "-" & sCDKey
Next
sGetXPCDKey = sCDKey
End Function
Public Function Question()
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim strUserName
Dim strCompName
Dim objNetwork
Dim sGetOfficePID
Dim sGetOfficePName
Set objShell = CreateObject("WScript.Shell")
sGetOfficePID = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration\{91110409-6000-11D3-8CFE-0150048383C9}\ProductID")
sGetOfficePName = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration\{91110409-6000-11D3-8CFE-0150048383C9}\ProductName")
Set objNetwork =
WScript.CreateObject("WScript.Network")
strUserName =
objNetwork.UserName
strCompName = objNetwork.ComputerName
Set
oOutFile = objFSO.CreateTextFile("x:\scripts\results\" & strUserName & "." &
strCompName & "-office.txt")
oOutFile.WriteLine "Licensing for:" &
strCompName
oOutFile.WriteLine ""
oOutFile.WriteLine "Office Version"
oOutFile.WriteLine sGetOfficePName
oOutFile.WriteLine ""
oOutFile.WriteLine "Office Product Key"
oOutFile.WriteLine sGetXPCDKey
oOutFile.WriteLine ""
oOutFile.WriteLine "Office Product ID"
oOutFile.WriteLine sGetOfficePID
End Function
call Question
'----------------------------------
Save this file as windows.vbs
Public Function sGetXPCDKey()
Dim bDigitalProductID
Dim bProductKey()
Dim bKeyChars(24)
Dim ilByte
Dim nCur
Dim sCDKey
Dim ilKeyByte
Dim ilBit
ReDim Preserve bProductKey(14)
Set objShell = CreateObject("WScript.Shell")
bDigitalProductID = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\DigitalProductID")
Set objShell = Nothing
For ilByte = 52 To 66
bProductKey(ilByte - 52) = bDigitalProductID(ilByte)
Next
'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")
For ilByte = 24 To 0 Step -1
nCur = 0
For ilKeyByte = 14 To 0 Step -1
'Step through each byte in the Product Key
nCur = nCur * 256 Xor bProductKey(ilKeyByte)
bProductKey(ilKeyByte) = Int(nCur / 24)
nCur = nCur Mod 24
Next
sCDKey = Chr(bKeyChars(nCur)) & sCDKey
If ilByte Mod 5 = 0 And ilByte <> 0 Then sCDKey = "-" & sCDKey
Next
sGetXPCDKey = sCDKey
End Function
Public Function Question()
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim strUserName
Dim strCompName
Dim objNetwork
Dim SGetWindowsName
Dim SGetWindowsPID
Set objShell = CreateObject("WScript.Shell")
SGetWindowsPID = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\ProductID")
SGetWindowsName = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\ProductName")
Set objNetwork = WScript.CreateObject("WScript.Network")
strUserName = objNetwork.UserName
strCompName = objNetwork.ComputerName
Set oOutFile = objFSO.CreateTextFile("x:\scripts\results\"
& strUserName & "." & strCompName & "-windows.txt")
oOutFile.WriteLine "Licensing for:" & strCompName
oOutFile.WriteLine ""
oOutFile.WriteLine "Windows Version"
oOutFile.WriteLine SGetWindowsName
oOutFile.WriteLine ""
oOutFile.WriteLine "Windows Product Key"
oOutFile.WriteLine sGetXPCDKey
oOutFile.WriteLine ""
oOutFile.WriteLine "Windows Product ID"
oOutFile.WriteLine SGetWindowsPID
End Function
call Question
'----------------------------------