﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Retrieve Windows Product Key</title><link>http://www.visualbasicscript.com/</link><description /><copyright>(c) VBScript Forum</copyright><ttl>30</ttl><item><title>RE: Retrieve Windows Product Key (chrisupman)</title><description>  Has anyone had any success in getting this script to work in a windows x64 environment?&amp;nbsp;  &lt;br&gt;      &amp;nbsp; &lt;br&gt;      I have been trying to get the HTA version to work in windows 7 x64 by spawning the old script host &lt;br&gt;      &amp;nbsp;Set oSH = CreateObject("WScript.Shell") &lt;br&gt;      Set oFS = CreateObject("Scripting.FileSystemObject") &lt;br&gt;      &amp;nbsp; &lt;br&gt;      strOldWSH = oSH.ExpandEnvironmentStrings("%SYSTEMROOT%\SysWOW64\wscript.exe") &lt;br&gt;      If oFS.FileExists(strOldWSH) Then &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp; If Not UCase(WScript.FullName) = UCase(strOldWSH) Then &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oSH.Run """" &amp;amp; strOldWSH &amp;amp; """ """ &amp;amp; WScript.ScriptFullName &amp;amp; """", 1, False &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo "Running on 64-bit WSH." &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br&gt;      End If &lt;br&gt;      This information was posted on the MS scripting guys site. &lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;      I have had no luck in getting any results.  &lt;br&gt;      &amp;nbsp; &lt;br&gt;      What tecnniques &lt;br&gt;  </description><link>http://www.visualbasicscript.com/fb.ashx?m=81773</link><pubDate>Mon, 22 Mar 2010 04:52:56 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (dm_4ever)</title><description>  Simply assign computers to the array ActiveCompList and use the existing code. </description><link>http://www.visualbasicscript.com/fb.ashx?m=69593</link><pubDate>Wed, 18 Feb 2009 21:13:59 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (travisb)</title><description>  Is it possible to add a list of computer names or IP addresses that you want scanned? This way you do not have to scan the entire domain. I'm new to VBS and not sure where I would start. Can anyone help with this? </description><link>http://www.visualbasicscript.com/fb.ashx?m=69421</link><pubDate>Fri, 13 Feb 2009 09:01:39 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (fletchjake)</title><description>  Hi, &lt;br&gt;  This is a great script, I am ENTIRELY new to VB so I am lost...I got it running pulled my windows product id from the domain and all is good that way. &lt;br&gt;   &lt;br&gt;  I have a couple questions though: &lt;br&gt;   &lt;br&gt;  1.&amp;nbsp; I can't get it to work so I can pull the office, visio, or other MS product id's?&amp;nbsp; Anyone able to help?&amp;nbsp; I am using the script below:&amp;nbsp;  &lt;br&gt;  2.&amp;nbsp; I also want to see if this can go to a csv file or excel?&amp;nbsp;  &lt;br&gt;   &lt;br&gt;  '&amp;nbsp; ########################################## &lt;br&gt;  '&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # &lt;br&gt;  '&amp;nbsp; #&amp;nbsp; VBScript to Retrieve a List of Computers from Active&amp;nbsp; # &lt;br&gt;  '&amp;nbsp; #&amp;nbsp; Directory, check connectivity and generate a report file # &lt;br&gt;  '&amp;nbsp; #&amp;nbsp; containing Microsoft Windows Licensing Information.&amp;nbsp; # &lt;br&gt;  '&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # &lt;br&gt;  '&amp;nbsp; ########################################## &lt;br&gt;  ' &lt;br&gt;  Dim objDomain, strComputer, strADComputer, PC, strKeyPath, strValueName, oReg &lt;br&gt;  Dim ADCompList, ActiveCompList, RetrievedKeys &lt;br&gt;  Dim IE, oFSO, objShell, strPath, objFile &lt;br&gt;  Set IE = CreateObject("InternetExplorer.Application") &lt;br&gt;  Set objShell = CreateObject("Wscript.Shell") &lt;br&gt;  strPath = Wscript.ScriptFullName &lt;br&gt;  Set objFSO = CreateObject("Scripting.FileSystemObject") &lt;br&gt;  Set objFile = objFSO.GetFile(strPath) &lt;br&gt;  strPath = objFSO.GetParentFolderName(objFile)  &lt;br&gt;  With IE &lt;br&gt;  .left=200 &lt;br&gt;  .top=200 &lt;br&gt;  .height=140 &lt;br&gt;  .width=250 &lt;br&gt;  .menubar=0 &lt;br&gt;  .toolbar=0 &lt;br&gt;  .statusBar=0 &lt;br&gt;  .navigate "About:Blank" &lt;br&gt;  .visible=1 &lt;br&gt;  End With &lt;br&gt;  'wait a while until IE as finished to load &lt;br&gt;  Do while IE.busy &lt;br&gt;  loop &lt;br&gt;  With IE.document &lt;br&gt;  .Open &lt;br&gt;  .WriteLn "&amp;lt;html&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;head&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;HTA:APPLICATION " &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID='objNoTitleBar'" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAPTION=no" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHOWINTASKBAR='NO'" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BORDER='NONE'" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APPLICATIONNAME='Please Wait'" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCROLL='AUTO'" &lt;br&gt;  .WriteLn "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SINGLEINSTANCE='yes'" &lt;br&gt;  .WriteLn "&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;/head&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;body text='#ffffff' bgcolor='#000000'&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;center&amp;gt;Please Wait....&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;img src='" &amp;amp; strPath &amp;amp; "\ajax-loader.gif' /&amp;gt;&amp;lt;/center&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;/body&amp;gt;" &lt;br&gt;  .WriteLn "&amp;lt;/html&amp;gt;" &lt;br&gt;  .Close &lt;br&gt;  End With &lt;br&gt;  ADCompList = Array(0) &lt;br&gt;  ' Connect to root of domain &lt;br&gt;  Dim rootDSE, domainContainer &lt;br&gt;  Set rootDSE = GetObject("LDAP://RootDSE") &lt;br&gt;  domainContainer = rootDSE.Get("defaultNamingContext") &lt;br&gt;  Set ObjDomain = GetObject("LDAP://" &amp;amp; domainContainer) &lt;br&gt;  ' Enumerate through the domain &lt;br&gt;  WorkWithObject(ObjDomain) &lt;br&gt;  Sub WorkWithObject(oContainer) &lt;br&gt;  Dim oADObject &lt;br&gt;  For Each oADObject in oContainer &lt;br&gt;  Select Case oADObject.Class &lt;br&gt;  Case "computer" &lt;br&gt;  Dim strADComputer &lt;br&gt;  strADComputer = oADObject.cn &lt;br&gt;  ADCompList(UBound(ADCompList)) = strADComputer &lt;br&gt;  ReDim Preserve ADCompList(UBound(ADCompList) + 1) &lt;br&gt;  Case "organizationalUnit" , "container" &lt;br&gt;  WorkWithObject(oADObject) &lt;br&gt;  End Select &lt;br&gt;  Next &lt;br&gt;  End Sub &lt;br&gt;  ReDim Preserve ADCompList(UBound(ADCompList) - 1) &lt;br&gt;  ActiveCompList = Array(0) &lt;br&gt;  For Each PC In ADCompList &lt;br&gt;  If Reachable(PC) Then &lt;br&gt;  ActiveCompList(UBound(ActiveCompList)) = PC &lt;br&gt;  ReDim Preserve ActiveCompList(UBound(ActiveCompList) + 1) &lt;br&gt;  End If &lt;br&gt;  Next &lt;br&gt;  ReDim Preserve ActiveCompList(UBound(ActiveCompList) - 1) &lt;br&gt;  Set objXMLDoc = CreateObject("Microsoft.XMLDOM")  &lt;br&gt;  Set rootEl = objXMLDoc.createElement("Computers") &lt;br&gt;  objXMLDoc.appendChild rootEl &lt;br&gt;  Dim objCurrNode, objNewNode, objNewText  &lt;br&gt;  ' &amp;lt;--------------- Open Registry Key and populate binary data into an array --------------------------&amp;gt; &lt;br&gt;  const HKEY_LOCAL_MACHINE = &amp;amp;H80000002  &lt;br&gt;  strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion" &lt;br&gt;  strValueName = "DigitalProductId" &lt;br&gt;  Dim iValues() &lt;br&gt;  On Error Resume Next &lt;br&gt;  For Each strComputer In ActiveCompList &lt;br&gt;  Set objPCField = objXMLDoc.createElement("PC") &lt;br&gt;  rootEl.appendChild(objPCField)  &lt;br&gt;  Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; _ &lt;br&gt;  &amp;nbsp; strComputer &amp;amp; "\root\default:StdRegProv") &lt;br&gt;  oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,iValues &lt;br&gt;  Dim arrDPID &lt;br&gt;  arrDPID = Array() &lt;br&gt;  For i = 52 to 66 &lt;br&gt;  ReDim Preserve arrDPID( UBound(arrDPID) + 1 ) &lt;br&gt;  arrDPID( UBound(arrDPID) ) = iValues(i) &lt;br&gt;  Next &lt;br&gt;  ' &amp;lt;--------------- Create an array to hold the valid characters for a microsoft Product Key --------------------------&amp;gt; &lt;br&gt;  Dim arrChars &lt;br&gt;  arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9") &lt;br&gt;  ' &amp;lt;--------------- The clever bit !!! (Decrypt the base24 encoded binary data)--------------------------&amp;gt; &lt;br&gt;  strProductKey = "" &lt;br&gt;  For i = 24 To 0 Step -1 &lt;br&gt;  k = 0 &lt;br&gt;  For j = 14 To 0 Step -1 &lt;br&gt;  k = k * 256 Xor arrDPID(j) &lt;br&gt;  arrDPID(j) = Int(k / 24) &lt;br&gt;  k = k Mod 24 &lt;br&gt;  Next &lt;br&gt;  strProductKey = arrChars(k) &amp;amp; strProductKey &lt;br&gt;  If i Mod 5 = 0 And i &amp;lt;&amp;gt; 0 Then strProductKey = "-" &amp;amp; strProductKey &lt;br&gt;  Next &lt;br&gt;  strFinalKey = strProductKey &lt;br&gt;  Set objWMIService = GetObject("winmgmts:" _ &lt;br&gt;  &amp;amp; "{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2") &lt;br&gt;  Set colOperatingSystems = objWMIService.ExecQuery("select * from Win32_OperatingSystem") &lt;br&gt;  For Each objOperatingsystem in colOperatingSystems &lt;br&gt;  strOS&amp;nbsp;&amp;nbsp; = objOperatingsystem.Caption &lt;br&gt;  strBuild&amp;nbsp;&amp;nbsp; = objOperatingsystem.BuildNumber &lt;br&gt;  strSerial&amp;nbsp;&amp;nbsp; = objOperatingsystem.SerialNumber &lt;br&gt;  strRegistered&amp;nbsp; = objOperatingsystem.RegisteredUser &lt;br&gt;  Next &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("Name")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strComputer)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("OS")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strOS)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("Build")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strBuild)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("PID")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strSerial)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("RegisteredTo")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strRegistered)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Set objNewNode = objXMLDoc.createElement("Key")  &lt;br&gt;  Set objNewText = objXMLDoc.createTextNode(strFinalKey)  &lt;br&gt;  objPCField.appendChild(objNewNode)  &lt;br&gt;  objNewNode.appendChild(objNewText)  &lt;br&gt;  Next &lt;br&gt;  'Add an XML processing instruction and insert it before the root element &lt;br&gt;  Set p=objXMLDoc.createProcessingInstruction("xml","version='1.0'") &lt;br&gt;  xmlDoc.insertBefore p,objXMLDoc.childNodes(0) &lt;br&gt;  objXMLDoc.Save("report.xml") &lt;br&gt;  IE.Quit &lt;br&gt;  set IE = Nothing &lt;br&gt;  MsgBox("Finished") &lt;br&gt;  ' &amp;lt;----------------------- Function to check if computer is switched on and responding to Ping ----------------------&amp;gt; &lt;br&gt;  Function Reachable(strComputer) &lt;br&gt;  ' On Error Resume Next &lt;br&gt;  Dim wmiQuery, objWMIService, objPing, objStatus &lt;br&gt;  wmiQuery = "Select * From Win32_PingStatus Where Address = '" &amp;amp; strComputer &amp;amp; "'" &lt;br&gt;  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") &lt;br&gt;  Set objPing = objWMIService.ExecQuery(wmiQuery) &lt;br&gt;  For Each objStatus in objPing &lt;br&gt;  If IsNull(objStatus.StatusCode) Or objStatus.Statuscode&amp;lt;&amp;gt;0 Then &lt;br&gt;  Reachable = False 'if computer is unreacable, return false &lt;br&gt;  Else &lt;br&gt;  Reachable = True 'if computer is reachable, return true &lt;br&gt;  End If &lt;br&gt;  Next &lt;br&gt;  End Function &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=66092</link><pubDate>Fri, 07 Nov 2008 14:16:35 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (mbouchard)</title><description>  The error you are getting means that you have arrDPID dimmed twice.&amp;nbsp; If you are only using it in the function, remove the dim at the top of the script.&amp;nbsp; If you are using it in both places, remove the dim from the function. </description><link>http://www.visualbasicscript.com/fb.ashx?m=64021</link><pubDate>Thu, 04 Sep 2008 04:12:46 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (hickory420)</title><description>  Thanks for that, mbouchard. When I moved it out of the if else then statements, I stopped getting the syntax error as well! But I do get a different error :-P , Name Redifined.  &lt;br&gt;   &lt;br&gt;  The line is it complaining about is "Dim iValues, arrDPID". I put the Function right above the first For statement "For i = intStartingAddressInput to intEndingAddressInput"  &lt;br&gt;   &lt;br&gt;  I was actually happy that I got a different error message. sad isn't it.... &lt;br&gt;  Don't get me wrong, I will be Cheering once the script is working and I will post the final product to share with everyone because you guys rock! &lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s8.gif" alt="" /&gt; &lt;br&gt;   &lt;br&gt;  &lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s13.gif" alt="" /&gt;again.&lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s12.gif" alt="" /&gt;&lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s14.gif" alt="" /&gt; &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=64013</link><pubDate>Wed, 03 Sep 2008 20:12:41 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (p0ng)</title><description>  Very nice Parabellum &lt;br&gt;   &lt;br&gt;  Now your next task should be to create an HTA to &lt;i&gt;change &lt;/i&gt;the registered keys. &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=64005</link><pubDate>Wed, 03 Sep 2008 12:05:35 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (mbouchard)</title><description>  Try moving the function outside of the If else then.&amp;nbsp; As soon as I did that I stopped getting a syntax error message in PrimalScript </description><link>http://www.visualbasicscript.com/fb.ashx?m=63987</link><pubDate>Wed, 03 Sep 2008 07:08:50 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (hickory420)</title><description>  Hi Guys! &lt;br&gt;   &lt;br&gt;  Parabellum, I have to say, Very well done with your script. It's exactly what i've been looking for! Legend! &lt;br&gt;   &lt;br&gt;  But I have a slight hiccup... I have integrated your script with one from &lt;a href="http://www.microsoft.com/technet/scriptcenter/scripts/templates/wmi/connect/default.mspx?mfr=true" target="_blank" rel="nofollow"&gt;microsofts TechNet website&lt;/a&gt; and now I am getting a Syntax Error on Line 102 Character 1 &lt;br&gt;   &lt;br&gt;  That line is: Function decodeKey(iValues, strProduct) &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   &lt;br&gt;  I am pretty good at vbs, but this one threw me in for quite a loop..... I don't know how to fix it. &lt;br&gt;   &lt;br&gt;  It honestly makes no sence at all because essentially all I am doing is pinging each computer and if it replys it runs the keycheck script against that machine then dumps it to a file, &lt;br&gt;  then moves on to the next one. Why Syntax Error? It a Function! &lt;br&gt;   &lt;br&gt;  Can you make heads or tails of this? &lt;br&gt;   &lt;br&gt;  Thanks to Any/Everyone in advance! &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 On Error Resume Next
 
 Const WbemAuthenticationLevelPktPrivacy = 6
 
 strCredentials = InputBox _
 &amp;nbsp;&amp;nbsp; ("Please enter the user name, a blank space, and then the password:", _
 &amp;nbsp;&amp;nbsp; "Enter User Credentials")
 
 If strCredentials = "" Then
 &amp;nbsp;&amp;nbsp; Wscript.Echo "Username and password must be provided. Now quitting."
 &amp;nbsp;&amp;nbsp; Wscript.Quit
 &amp;nbsp;&amp;nbsp; End If
 
 &amp;nbsp;&amp;nbsp; arrCredentials = Split(strCredentials," ")
 &amp;nbsp;&amp;nbsp; strUser = arrCredentials(0)
 &amp;nbsp;&amp;nbsp; strPassword = arrCredentials(1)
 
 strSubnetInput = InputBox("Enter the SubNet of the network you wish to scan." &amp;amp; VbCrLf &amp;amp;_
 VbCrLf &amp;amp; " Example: 192.168.xx.1")
 
 intStartingAddressInput = InputBox("Enter the starting address of the ping scan." &amp;amp; VbCrLf &amp;amp;_
 VbCrLf &amp;amp; "Example: 192.168." &amp;amp; strSubnetInput &amp;amp; ".1-254")
 
 intEndingAddressInput = InputBox("Enter the ending address of the Ping scan" &amp;amp; VbCrLf &amp;amp;_
 VbCrLf &amp;amp; "Example: 192.168." &amp;amp; strSubnetInput &amp;amp; "." &amp;amp; intStartingAddressInput &amp;amp; "-255")
 
 strSubnet = "192.168."&amp;amp; strSubnetInput &amp;amp;"."
 
 For i = intStartingAddressInput to intEndingAddressInput
 &amp;nbsp;&amp;nbsp; strComputer = strSubnet &amp;amp; i
 
 &amp;nbsp;&amp;nbsp; Set objShell = CreateObject("WScript.Shell")
 &amp;nbsp;&amp;nbsp; strCommand = "%comspec% /c ping -n 1 -w 200 " &amp;amp; strComputer &amp;amp; ""
 &amp;nbsp;&amp;nbsp; Set objExecObject = objShell.Exec(strCommand)
 
 &amp;nbsp;&amp;nbsp; Do While Not objExecObject.StdOut.AtEndOfStream
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strText = objExecObject.StdOut.ReadAll()
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Instr(strText, "Reply") &amp;gt; 0 Then
 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
 &amp;nbsp;&amp;nbsp; Set objWMIService = objwbemLocator.ConnectServer _
 &amp;nbsp;&amp;nbsp; (strComputer, strNamespace, strUser, strPassword)
 &amp;nbsp;&amp;nbsp; objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
 
 &amp;nbsp;&amp;nbsp; Set objFileSys = CreateObject ("Scripting.FileSystemObject")&amp;nbsp; 
 logfile = "PingPong." &amp;amp; strSubnetInput &amp;amp; ".txt"
 Set filetemp = objFileSys.OpenTextFile(logfile, 8, True)
 &amp;nbsp;&amp;nbsp; filetemp.Write strComputer &amp;amp; " Ping... Pong"
 &amp;nbsp;&amp;nbsp; filetemp.Write VbCrLf
 &amp;nbsp;&amp;nbsp; filetemp.Close
 '===============================================================
 '&amp;nbsp; ##############################################################
 '&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
 '&amp;nbsp; # VBScript to retrieve Microsoft Product Keys&amp;nbsp; #
 '&amp;nbsp; # from the registry by decoding DigitalProductID's #
 '&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
 '&amp;nbsp; # -------------------------------------------------- #
 '&amp;nbsp; # Created by: Parabellum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
 '&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
 '&amp;nbsp; ##############################################################
 '
 CONST HKEY_LOCAL_MACHINE = &amp;amp;H80000002
 CONST SEARCH_KEY = "DigitalProductID"
 Dim arrSubKeys(4,1)
 Dim foundKeys
 Dim iValues, arrDPID
 foundKeys = Array()
 iValues = Array()
 arrSubKeys(0,0) = "Microsoft Windows Product Key"
 arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
 arrSubKeys(2,0) = "Microsoft Office XP"
 arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
 arrSubKeys(1,0) = "Microsoft Office 2003"
 arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
 arrSubKeys(3,0) = "Microsoft Office 2007"
 arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
 arrSubKeys(4,0) = "Microsoft Exchange Product Key"
 arrSubKeys(4,1) = "SOFTWARE\Microsoft\Exchange\Setup"
 
 ' &amp;lt;--------------- Open Registry Key and populate binary data into an array --------------------------&amp;gt;
 
 Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\default:StdRegProv")
 
 For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
 oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes
 If Not IsNull(arrDPIDBytes) Then
 call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
 Else
 oReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys
 If Not IsNull(arrGUIDKeys) Then
  For Each GUIDKey In arrGUIDKeys
 &amp;nbsp; oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) &amp;amp; "\" &amp;amp; GUIDKey, SEARCH_KEY, arrDPIDBytes
 &amp;nbsp; If Not IsNull(arrDPIDBytes) Then
 &amp;nbsp;&amp;nbsp; call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
 &amp;nbsp; End If
  Next
 End If
 End If
 Next
 MsgBox("Finished")
 
 ' &amp;lt;----------------------------------------- Return the Product Key ---------------------------------------------------&amp;gt;
 Function decodeKey(iValues, strProduct)
 
 Dim arrDPID
 arrDPID = Array()
 
 ' &amp;lt;--------------- extract bytes 52-66 of the DPID --------------------------&amp;gt;
 For i = 52 to 66
 ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
 arrDPID( UBound(arrDPID) ) = iValues(i)
 Next
 
 ' &amp;lt;--------------- Create an array to hold the valid characters for a microsoft Product Key --------------------------&amp;gt;
 Dim arrChars
 arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
 
 ' &amp;lt;--------------- The clever bit !!! (decode the base24 encoded binary data)--------------------------&amp;gt;
 For i = 24 To 0 Step -1
 k = 0
 For j = 14 To 0 Step -1
  k = k * 256 Xor arrDPID(j)
  arrDPID(j) = Int(k / 24)
  k = k Mod 24
 Next
 strProductKey = arrChars(k) &amp;amp; strProductKey
 If i Mod 5 = 0 And i &amp;lt;&amp;gt; 0 Then strProductKey = "-" &amp;amp; strProductKey
 Next
 
 ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
 foundKeys( UBound(foundKeys) ) = strProductKey
 strKey = UBound(foundKeys)
 
 Set objFileSys = CreateObject ("Scripting.FileSystemObject")&amp;nbsp; 
 logfile = "PC-Info.txt"
 Set filetemp = objFileSys.OpenTextFile(logfile, 8, True)
 &amp;nbsp;&amp;nbsp; filetemp.Write strComputer
 &amp;nbsp;&amp;nbsp; filetemp.Write strProduct &amp;amp; vbNewLine &amp;amp; foundKeys(strKey) &amp;amp; vbNewLine 
 &amp;nbsp;&amp;nbsp; filetemp.Write VbCrLf
 &amp;nbsp;&amp;nbsp; filetemp.Close
 
 End Function
 ' =====================================================================
 Else
 Set objFileSys = CreateObject ("Scripting.FileSystemObject")&amp;nbsp; 
 logfile = "PingPong." &amp;amp; strSubnetInput &amp;amp; ".txt"
 Set filetemp = objFileSys.OpenTextFile(logfile, 8, True)
 &amp;nbsp;&amp;nbsp; filetemp.Write strComputer &amp;amp; " Ping..."
 &amp;nbsp;&amp;nbsp; filetemp.Write VbCrLf
 &amp;nbsp;&amp;nbsp; filetemp.Close
 End If
 Loop
 Next
 &lt;/pre&gt; </description><link>http://www.visualbasicscript.com/fb.ashx?m=63981</link><pubDate>Tue, 02 Sep 2008 19:58:24 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (Parabellum)</title><description>  sorry, i haven't checked this for a while. &lt;br&gt;  Sorry to say... the reason I didn't add support for office 2000 is because you can't retrieve the key from the registry for office 2000 &lt;br&gt;  It is only in versions XP or later that micrsoft started storing the key in this way. &lt;br&gt;  I haven't yet found any tool... vbs or other that can retrieve a 2000 key. &lt;br&gt;  If you know of one, let me know and i will try and find out how it works and see if I can modify the script to add this feature. &lt;br&gt;  hope this answere your question. &lt;br&gt;  &amp;nbsp; &lt;br&gt;  P &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55661</link><pubDate>Fri, 18 Jan 2008 08:48:15 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  I tried tweaking the script to look under ProductID, with no luck. &lt;br&gt;  &amp;nbsp; &lt;br&gt;  After some extensive research, reading Help files for stand-alone key finder apps and whatnot, everywhere I'm looking is saying that Office 2000 does not store the key and the key cannot be retrieved.&amp;nbsp; This is beautiful, since the majority of the machines at our office have office 2000... &lt;br&gt;  &amp;nbsp; &lt;br&gt;  So, if anyone can find anything to the contrary, please advise.&amp;nbsp; I would REALLY love to be able to automate the key retrieval for asset management.&amp;nbsp; But, if not, I guess that's life! &lt;br&gt;  &amp;nbsp; &lt;br&gt;  Thanks, all &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55060</link><pubDate>Mon, 07 Jan 2008 14:56:33 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (ebgreen)</title><description>  So it looks like maybe the info is in ProductID for 2k? &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55058</link><pubDate>Mon, 07 Jan 2008 14:31:07 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  Ok.&amp;nbsp; This doesn't look good.&amp;nbsp; I'm going to double check this on a different machine. &lt;br&gt;  &amp;nbsp; &lt;br&gt;  The location is still the same, but there does not seem to be a value in the DigitalProductID key.&amp;nbsp; Here's a dump from the entire "Registration" tree: &lt;br&gt;  &amp;nbsp; &lt;br&gt;  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration] &lt;br&gt;  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration\DigitalProductID] &lt;br&gt;  @="" &lt;br&gt;  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration\ProductID] &lt;br&gt;  @="08706-OEM-0086151-38750" &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55056</link><pubDate>Mon, 07 Jan 2008 14:02:37 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (ebgreen)</title><description>  Looks like it looks at every subkey under to product root key (i.e. every subkey under SOFTWARE\Microsoft\Office\10.0\Registration for Office XP). In each subkey it looks for a value named DigitalProductID. You will need to find out how Office 2k differs from this. </description><link>http://www.visualbasicscript.com/fb.ashx?m=55055</link><pubDate>Mon, 07 Jan 2008 13:26:53 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  The script looks to me like it always assumes that there is a GUID folder.&amp;nbsp; But I could be misreading it... Either way, I'm not experienced enough with VBS to even determine that for sure, much less re-write the code.&amp;nbsp; There is a lot of syntax mixed in that is unfamiliar to me. The GUID logic is in the "ELSE" portion of an IF statement, so for all I know, the initial IF is determining if there is no GUID folder.&amp;nbsp; If that is the case, then the logic is already there and is just not working.&amp;nbsp; Otherwise, I'm totally off the mark. &lt;br&gt;  &amp;nbsp; &lt;br&gt;  Anyway, I'm hoping someone on here can offer some more specific suggestions of code changes to try. &lt;br&gt;  &amp;nbsp; &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55054</link><pubDate>Mon, 07 Jan 2008 13:18:10 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (ebgreen)</title><description>  Sounds like you have some modifications ahead of you.&amp;nbsp;&amp;nbsp; &lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s6.gif" alt="" /&gt; </description><link>http://www.visualbasicscript.com/fb.ashx?m=55052</link><pubDate>Mon, 07 Jan 2008 13:03:33 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  In fact, we have some users that have even older versions of office installed, and they don't have the GUID folder either. </description><link>http://www.visualbasicscript.com/fb.ashx?m=55050</link><pubDate>Mon, 07 Jan 2008 13:00:07 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  I'm waiting on&amp;nbsp;a regedit screenshot&amp;nbsp;off an XP machine running office 2000.&amp;nbsp; In the mean time, I can tell you that the "DigitalProductID" is directly under "Registration", and not under a GUID subfolder.&amp;nbsp; I'm thinking that is the culprit... &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55049</link><pubDate>Mon, 07 Jan 2008 12:56:17 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (ebgreen)</title><description>  I don't have a machine with Office 2000 on it to check, but are you sure that the registration information Office 2k is at that registry path? </description><link>http://www.visualbasicscript.com/fb.ashx?m=55047</link><pubDate>Mon, 07 Jan 2008 12:33:07 GMT</pubDate></item><item><title> RE: Retrieve Windows Product Key (NewLeafIT)</title><description>  I am a noob to VBS and the related languages (my experience is more in Shell/Bash/PHP/Perl) so please bear with my ignorance... &lt;br&gt;  &amp;nbsp; &lt;br&gt;  I have been trying some of the scripts in this post, and they appear to work well for many of my machines.&amp;nbsp; I'm using the HTA version now&amp;nbsp;but the older machines running Office 2000 are not working.&amp;nbsp; It's failing to retrieve the information for MS Office, and returns only the OS info.&amp;nbsp; I modified the script to include 2000, but I must have done something wrong.&amp;nbsp;  &lt;br&gt;  &amp;nbsp; &lt;br&gt;  I edited Line 23 and added a new element to the array (lines 36 &amp;amp; 37).&amp;nbsp; Here's my code.&amp;nbsp; Could someone please tell me what I am missing? &lt;br&gt;  &amp;nbsp; &lt;br&gt;  Thanks... &lt;br&gt;  &amp;nbsp; &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 &amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt;Microsoft Product Key Retrieval&amp;lt;/title&amp;gt;
 &amp;lt;hta:application
 applicationname="MSKeyRetrieval" 
 caption="MSKeyRetrieval"
 contextmenu="no"
 maximizebutton="no"
 minimizebutton="yes"
 navigable="yes"
 showintaskbar="yes"
 singleinstance="yes"
 sysmenu="yes"
 &amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;script language="VBScript"&amp;gt;
 Const HKEY_LOCAL_MACHINE = &amp;amp;H80000002
 Const SEARCH_KEY = "DigitalProductID"
 Dim foundKeys
 Dim iValues
 Dim arrDPID
 Dim strHTML
 Dim arrSubKeys(5,1)
 foundKeys = Array()
 iValues = Array()
 arrSubKeys(0,0) = "Microsoft Windows"
 arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
 arrSubKeys(2,0) = "Microsoft Office XP"
 arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
 arrSubKeys(1,0) = "Microsoft Office 2003"
 arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
 arrSubKeys(3,0) = "Microsoft Office 2007"
 arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
 arrSubKeys(4,0) = "Microsoft Exchange Product Key"
 arrSubKeys(4,1) = "SOFTWARE\Microsoft\Exchange\Setup"
 arrSubKeys(5,0) = "Microsoft Office 2000"
 arrSubKeys(5,1) = "SOFTWARE\Microsoft\Office\9.0\Registration"
 Sub window_onload
 ' &amp;lt;--------------- Set window Size ---------------&amp;gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strComputer = "."
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objWMIService = GetObject("winmgmts:\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objItem in colItems
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intHorizontal = objItem.ScreenWidth
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intVertical = objItem.ScreenHeight
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intLeft = (intHorizontal - 500) / 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intTop = (intVertical - 600) / 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.resizeTo 500,600
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.moveTo intLeft, intTop
 &amp;nbsp;
 ' &amp;lt;--------------- Open Registry Key and populate binary data into an array --------------------------&amp;gt;
 strComputer = "."
 Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\default:StdRegProv")
 For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
 &amp;nbsp;oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes
 &amp;nbsp;If Not IsNull(arrDPIDBytes) Then
 &amp;nbsp; call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
 &amp;nbsp;Else
 &amp;nbsp; oReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys
 &amp;nbsp; If Not IsNull(arrGUIDKeys) Then
 &amp;nbsp;&amp;nbsp; For Each GUIDKey In arrGUIDKeys
 &amp;nbsp;&amp;nbsp;&amp;nbsp; oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) &amp;amp; "\" &amp;amp; GUIDKey, SEARCH_KEY, arrDPIDBytes
 &amp;nbsp;&amp;nbsp;&amp;nbsp; If Not IsNull(arrDPIDBytes) Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
 &amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp; Next
 &amp;nbsp; End If
 &amp;nbsp;End If
 Next
 If IsNull(foundkeys) Then
 &amp;nbsp;DataArea.InnerHTML = "No Keys Found" 
 Else
 &amp;nbsp;DataArea.InnerHTML = strHTML
 End If 
 End Sub
 ' &amp;lt;----------------------- Return the Product Key ------------------------&amp;gt;
 Function decodeKey(iValues, strProduct)
 Dim arrDPID
 arrDPID = Array()
 ' &amp;lt;--------------- extract bytes 52-66 of the DPID --------------------------&amp;gt;
 For i = 52 to 66
 &amp;nbsp;ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
 &amp;nbsp;arrDPID( UBound(arrDPID) ) = iValues(i)
 Next
 ' &amp;lt;--------------- Create an array to hold the valid characters for a microsoft Product Key --------------------------&amp;gt;
 Dim arrChars
 arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
 ' &amp;lt;--------------- The clever bit !!! (decode the base24 encoded binary data)--------------------------&amp;gt;
 For i = 24 To 0 Step -1
 &amp;nbsp;k = 0
 &amp;nbsp;For j = 14 To 0 Step -1
 &amp;nbsp; k = k * 256 Xor arrDPID(j)
 &amp;nbsp; arrDPID(j) = Int(k / 24)
 &amp;nbsp; k = k Mod 24
 &amp;nbsp;Next
 &amp;nbsp;strProductKey = arrChars(k) &amp;amp; strProductKey
 &amp;nbsp;If i Mod 5 = 0 And i &amp;lt;&amp;gt; 0 Then strProductKey = "-" &amp;amp; strProductKey
 Next
 ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
 foundKeys( UBound(foundKeys) ) = strProductKey
 If strProduct = "Microsoft Windows" Then
 &amp;nbsp;strComputer = "."
 &amp;nbsp;Set objWMIService = GetObject("winmgmts:" &amp;amp; "{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")
 &amp;nbsp;Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
 &amp;nbsp;For Each objOperatingSystem in colOperatingSystems
 &amp;nbsp; strOS = objOperatingSystem.Caption
 &amp;nbsp;Next
 &amp;nbsp;strHTML = strHTML &amp;amp; "&amp;lt;h3&amp;gt;" &amp;amp; strOS &amp;amp; "&amp;lt;/h3&amp;gt;" &amp;amp; _
 &amp;nbsp;&amp;nbsp; "&amp;lt;h4&amp;gt;" &amp;amp; strProductKey &amp;amp; "&amp;lt;/h4&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;hr /&amp;gt;&amp;lt;br /&amp;gt;"
 Else
 &amp;nbsp;strHTML = strHTML &amp;amp; "&amp;lt;h3&amp;gt;" &amp;amp; strProduct &amp;amp; "&amp;lt;/h3&amp;gt;" &amp;amp; _
 &amp;nbsp;&amp;nbsp; "&amp;lt;h4&amp;gt;" &amp;amp; strProductKey &amp;amp; "&amp;lt;/h4&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;hr /&amp;gt;&amp;lt;br /&amp;gt;"
 End If
 End Function
 &amp;lt;/script&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;div id="header" style="color:#ffffff; height:100px; text-align:center; font-family:Tahoma;
 &amp;nbsp;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#0011aa', EndColorStr='#ffffff')"&amp;gt;
 &amp;nbsp;&amp;lt;br /&amp;gt;&amp;lt;h2&amp;gt;Retrieved Microsoft Product Keys&amp;lt;/h2&amp;gt;
 &amp;lt;/div&amp;gt;&amp;lt;hr /&amp;gt;
 &amp;lt;span id="DataArea"&amp;gt;&amp;lt;/span&amp;gt;
 &amp;lt;br /&amp;gt;
 &amp;lt;div id="Print" style="text-align:center;"&amp;gt;&amp;lt;input type="button" value="Print" Onclick="print()" ;&amp;gt;&amp;lt;/div&amp;gt;
 &amp;lt;/body&amp;gt;
 &amp;lt;/html&amp;gt;
 
 &lt;/pre&gt; &lt;br&gt;  &amp;nbsp; &lt;br&gt;  &amp;nbsp; &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=55046</link><pubDate>Mon, 07 Jan 2008 12:27:52 GMT</pubDate></item></channel></rss>
