Hi Gunsmokingman, Yes your updated script does work on XP now - thanks for your hard work and update. Just some feedback on things i notice with it; 1. If you have more than 1 sound/multimedia card installed - say a tv tuner card and a voice modem, the sound card section only picks up the last sound card in the list. 2. PCtype is correct, however because i am a pain in the bum i like to know if it is a portable, laptop, server, desktop or workstation... 3. If you have VMware installed on the computer - the network section picks up all the vmware network adaptors.. I liked what you did with v5 and have been researching WMI and VBScripting (and learning how to write some) really for the first time of the last 3 days as a result of your script to see what i could do with it and make it XP compatiable whilst waiting on your update as i know people don't always have the time to spend updating scripts etc. What i found was fantastic on what you can do with WMI and i thankyou for piquing my interest! I have made a number of changes and i hope improvements to the v5 script base you had provided to all. I have tested this version on both XP and Vista on 4 different machines including Vmware and it works wonderfully. The issues i raised above i beleive i have resolved in the updates i have made. In addition i have put in some changes that will allow anyone to just change some simple variables at the top of the script to tweak their informational requirements - specifically; Modifying the "Company Name" and "Support URL" Anyway here is my version (I will call 6.1.(date of build)) for all to have a look at and use if they wish. I am working on a further update that will also copy the OEMLogo.bmp to the %windir%\system32 folder and a command line switch to enable the notepad option to open the file on creation as i personally would not have this happen as i would be running in a completely unattended environment. '/-> Original script By Gunsmokingman '/-> modified and updated by FeLix '/-> Tested with Windows XP & Vista. '/-> Version 6.1.20080519 '/-> Option Explicit '/-----------------------------------------------------------------------> '/-> Change the variables below to reflect your Company information. Dim sURL : sURL = "http://www.mycompany.com/techsupport." Dim mCompany : mCompany = "My Company Name" '/-> End of Company Information changes '/-----------------------------------------------------------------------> '/-> Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 '/-> Dim objFolder, Ts, objFile Dim ObjWMI, objItem, colItems Dim dtmDate, dtm Dim C1, Cnt, i, objItemConfig, strIP, strIPAddr '/-> Dim Act : Set Act = CreateObject("Wscript.Shell") Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject") Dim Sys32 : Sys32 = act.ExpandEnvironmentStrings("%Windir%\System32") Dim Ini : Ini = "\oeminfo.ini" Dim strComputer : strComputer = "." Dim VBS : VBS = Act.ExpandEnvironmentStrings("%Temp%\" & Fso.GetFile(WScript.ScriptFullName).Name) '/-> Dim MB : MB = 1024 * 1024 Dim GB : GB = 1024 * 1024 * 1024 Dim Line : Line = "Line" & C1 Dim S_3 : S_3 = Space(3) Dim S_5 : S_5 = Space(5) Dim TitleL : TitleL = S_5 & Chr(171) & S_3 Dim TitleR : TitleR = S_3 & Chr(187) & S_5 Dim WmiVar : WmiVar = wbemFlagReturnImmediately + wbemFlagForwardOnly '/-> Set Ts = Fso.OpenTextFile(Sys32 & Ini, 2, True) '/-> ' WMI Section '/-> Set ObjWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", WmiVar) '/-----------------------------------------------------------------------> Dim PCType, RamTotal, sType For Each objItem In colItems RamTotal = FormatNumber(objItem.TotalPhysicalMemory/1048576) & " MB" Ts.WriteLine "[General]" Ts.WriteLine "Manufacturer = " & objItem.Manufacturer Ts.WriteLine "Model = " & objItem.Model Ts.WriteLine "SupportURL = " & sURL Ts.WriteLine "" sType = objItem.Description Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_SystemEnclosure", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems PCType = "Computer Type Unknown" If Join(objItem.ChassisTypes, ",") = 1 Then PCType = "Virtual PC Environment" If Join(objItem.ChassisTypes, ",") = 2 Then PCType = "Unknown" If Join(objItem.ChassisTypes, ",") = 3 Then PCType = "Desktop" If Join(objItem.ChassisTypes, ",") = 4 Then PCType = "Low Profile Desktop" If Join(objItem.ChassisTypes, ",") = 5 Then PCType = "Pizza Box" If Join(objItem.ChassisTypes, ",") = 6 Then PCType = "Mini Tower" If Join(objItem.ChassisTypes, ",") = 7 Then PCType = "Tower" If Join(objItem.ChassisTypes, ",") = 8 Then PCType = "Portable" If Join(objItem.ChassisTypes, ",") = 9 Then PCType = "Laptop" If Join(objItem.ChassisTypes, ",") = 10 Then PCType = "Notebook" If Join(objItem.ChassisTypes, ",") = 11 Then PCType = "Handheld" If Join(objItem.ChassisTypes, ",") = 12 Then PCType = "Docking Station" If Join(objItem.ChassisTypes, ",") = 13 Then PCType = "All-in-One" If Join(objItem.ChassisTypes, ",") = 14 Then PCType = "Sub-Notebook" If Join(objItem.ChassisTypes, ",") = 15 Then PCType = "Space Saving" If Join(objItem.ChassisTypes, ",") = 16 Then PCType = "Lunch Box" If Join(objItem.ChassisTypes, ",") = 17 Then PCType = "Main System Chassis" If Join(objItem.ChassisTypes, ",") = 18 Then PCType = "Expansion Chassis" If Join(objItem.ChassisTypes, ",") = 19 Then PCType = "Sub-Chassis" If Join(objItem.ChassisTypes, ",") = 20 Then PCType = "Bus Expansion Chassis" If Join(objItem.ChassisTypes, ",") = 21 Then PCType = "Peripheral Chassis" If Join(objItem.ChassisTypes, ",") = 22 Then PCType = "Storage Chassis" If Join(objItem.ChassisTypes, ",") = 23 Then PCType = "Rack Mount Chassis" If Join(objItem.ChassisTypes, ",") = 24 Then PCType = "Sealed-Case PC" Next '/-----------------------------------------------------------------------> Ts.WriteLine "[Support Information]" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "= For Technical Support:" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "= to obtain updated drivers or for information on frequently" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "= asked questions, visit the " & mCompany & " technical" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "= support web site at: " & sURL C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems C1 = C1 +1 If Trim(objItem.SerialNumber) = "" Then Ts.WriteLine "Line" & C1 & "=" & vbTab & " SERIAL NUMBER:: No serial number found" Else Ts.WriteLine "Line" & C1 & "=" & vbTab & " SERIAL NUMBER: " & objItem.SerialNumber End If C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "OPERATING SYSTEM INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & " PC Type " & vbTab & PCType C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Total Memory " & vbTab & RamTotal C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "OS Name " & vbTab & objItem.Caption C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "OS Version " & vbTab & objItem.Version C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Install Date " & vbTab & WMIDateStringToDate(objItem.InstallDate) C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Computer Name " & vbTab & objItem.CSName C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Organization " & vbTab & objItem.Organization C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "MOTHERBOARD INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Manufacturer " & vbTab & objItem.Manufacturer C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Description " & vbTab & sType C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Model Type " & vbTab & objItem.Product C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "System Type " & vbTab & PCType C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_Processor", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "CPU INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Manufacturer " & vbTab & objItem.Manufacturer C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "CPU Name " & vbTab & objItem.Name C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Description " & vbTab & objItem.Description C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Processor Speed " & vbTab & objItem.CurrentClockSpeed & " MHZ" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "L2 Cache Size " & vbTab & objItem.L2CacheSize C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "L2 Cache Speed " & vbTab & objItem.L2CacheSpeed & " MHZ" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", WmiVar) '/-----------------------------------------------------------------------> For Each objItem In colItems Cnt = Cnt + 1 If Cnt = 1 Then C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "GRAPHICS CARD INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Description " & vbTab & objItem.Description C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Driver Version " & vbTab & objItem.DriverVersion C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Adapter Ram " & vbTab & objItem.AdapterRAM /MB & " MB" C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Adapter DAC Type" & vbTab & objItem.AdapterDACType C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" End If Next '/-> Reset Cnt To Zero Cnt = 0 '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_SoundDevice", "WQL", WmiVar) '/-----------------------------------------------------------------------> ' Cnt = Cnt + 1 ' If Cnt = 1 Then C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "MULTIMEDIA/SOUND CARD INFORMATION" & TitleR C1 = C1 +1 For Each objItem In colItems Ts.WriteLine "Line" & C1 & "=" & S_3 & "Manufacturer By " & vbTab & objItem.Manufacturer C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Description " & vbTab & objItem.Description C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" ' End If Next '/-> Reset Cnt To Zero ' Cnt = 0 '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = 'Local Area Connection'") '/-----------------------------------------------------------------------> For Each objItem in colItems Set objItemConfig = objWMI.Get("Win32_NetworkAdapterConfiguration.Index=" & objItem.Deviceid) If Not IsNull (objItemConfig.IPAddress) Then For Each strIPAddr In objItemConfig.IPAddress strIP = strIP & strIPAddr & " " Next C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "NETWORK ADAPTER INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Adapter Name " & vbTab & objItem.Name C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Manufacturer By " & vbTab & objItem.Manufacturer C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "MAC Address " & vbTab & objItem.MACAddress C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "IP Address " & vbTab & strIP C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" End If Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = 'Wireless Network Connection'") '/-----------------------------------------------------------------------> For Each objItem in colItems Set objItemConfig = objWMI.Get("Win32_NetworkAdapterConfiguration.Index=" & objItem.Deviceid) strIP = "" For Each strIPAddr In objItemConfig.IPAddress strIP = strIP & strIPAddr & " " Next C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "WIRELESS NETWORK ADAPTER INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Adapter Name " & vbTab & objItem.Name C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Manufacturer By " & vbTab & objItem.Manufacturer C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "MAC Address " & vbTab & objItem.MACAddress C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "IP Address " & vbTab & strIP C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_PnPEntity where ClassGuid = '{4D36E966-E325-11CE-BFC1-08002BE10318}'",,48) '/-----------------------------------------------------------------------> For Each objItem in colItems C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & "HARDWARE ABSTRACTION LAYER INFORMATION" & TitleR C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & S_3 & "Hal Details " & vbTab & objItem.Name C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" Next '/-----------------------------------------------------------------------> Set colItems = ObjWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL", WmiVar) '/-----------------------------------------------------------------------> Dim DrvType, Rpt C1 = C1 +1 Ts.WriteLine "Line" & C1 & "=" & TitleL & Ucase("Disk Drive Information") & TitleR For Each objItem in colItems DrvType = objItem.MediaType C1 = C1 +1 CheckDrvType() Ts.WriteLine "Line" & C1 & "=" & Rpt Rpt = "" Next '/-----------------------------------------------------------------------> Function WMIDateStringToDate(dtmDate) WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _ Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _ & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2)) End Function '/-----------------------------------------------------------------------> Dim DrvDetails Function CheckDrvType() DrvDetails = objItem.Description '/-> Floppy Disk Check If DrvType = 5 then Rpt = S_3 & "FloppyDisk " & vbTab & objItem.Name & "\" End If '/-> CD Or DVD Check If DrvType = 11 Then If InStr(DrvDetails,"CD") Or InStr(DrvDetails,"Cd") Or InStr(DrvDetails,"cd") Then Rpt = S_3 & "Disk Drive " & vbTab & objItem.Name & "\" & vbTab & "Disk Type" & Space(2) &_ Chr(187) & Space(2) & DrvDetails End If If InStr(DrvDetails,"Dvd") Or InStr(DrvDetails,"DVD") Or InStr(DrvDetails,"dvd") Then Rpt = S_3 & "Disk Drive " & vbTab & objItem.Name & "\" & vbTab & "Disk Type" & Space(2) &_ Chr(187) & Space(2) & DrvDetails End If End If '/-> Hard Drive Check If DrvType = 12 Then Rpt = S_3 & "Hard Drive " & vbTab & objItem.Name & "\" & vbTab & "Disk Size" & Space(2) &_ Chr(187) & Space(2) & (Left(Round(objItem.Size /GB, 5),5)) & " GB" End If End Function '/-----------------------------------------------------------------------> Ts.Close Act.Run("Notepad.exe " & Sys32 & Ini) If Fso.FileExists(VBS) Then Fso.DeleteFile(VBS) End If And here attached is a runtime version as you have also supplied. MkOem_v6.1.20080519.exe