Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
| Option Explicit | |
| '========================================================== | |
| ' LANG : VBScript | |
| ' NAME : sydi-server.vbs | |
| ' AUTHOR : Patrick Ogenstad (patrick.ogenstad@netsafe.se) | |
| ' VERSION : 2.3 | |
| ' DATE : 2009-01-24 | |
| ' Description : Creates a basic documentation for a Windows | |
| ' system, which you can use as a starting point. | |
| ' | |
| ' COMMENTS : You are supposed to change the text appearing inside | |
| ' brackets. The Win32_Product class isn't installed by Default | |
| ' on Windows Server 2003, if you want to have the "Installed Application" | |
| ' section on 2003 you have to install the class yourself. | |
| ' | |
| ' UPDATES : http://sydiproject.com | |
| ' | |
| ' Running the script: | |
| ' You have to have Word installed on the computer you are running | |
| ' the script from. I would recommend running the script with cscript | |
| ' instead of wscript. | |
| ' For Options: cscript.exe sydi-server.vbs -h | |
| ' Feedback: Please send feedback to patrick.ogenstad@netsafe.se | |
| ' | |
| ' LICENSE : | |
| ' Copyright (c) 2004-2009 Patrick Ogenstad | |
| ' All rights reserved. | |
| ' | |
| ' Redistribution and use in source and binary forms, with or without | |
| ' modification, are permitted provided that the following conditions are met: | |
| ' | |
| ' * Redistributions of source code must retain the above copyright notice, | |
| ' this list of conditions and the following disclaimer. | |
| ' * Redistributions in binary form must reproduce the above copyright notice, | |
| ' this list of conditions and the following disclaimer in the documentation | |
| ' and/or other materials provided with the distribution. | |
| ' * Neither the name SYDI nor the names of its contributors may be used | |
| ' to endorse or promote products derived from this software without | |
| ' specific prior written permission. | |
| ' | |
| ' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| ' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| ' IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| ' ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
| ' LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| ' CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| ' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| ' INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| ' CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| ' ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| ' POSSIBILITY OF SUCH DAMAGE. | |
| '========================================================== | |
| '========================================================== | |
| ' Settings | |
| Dim strDocumentAuthor, strComputer | |
| ' Who Authored the document | |
| strDocumentAuthor = "" | |
| ' Script version | |
| Dim strScriptVersion | |
| strScriptVersion = "2.3" | |
| ' Fonts to use in document | |
| Dim strFontBodyText, strFontHeading1, strFontHeading2, strFontHeading3, strFontHeading4, strFontTitle, strFontTOC1, strFontTOC2, strFontTOC3 | |
| Dim strFontHeader, strFontFooter | |
| strFontBodyText = "Arial" | |
| strFontHeading1 = "Trebuchet MS" | |
| strFontHeading2 = "Trebuchet MS" | |
| strFontHeading3 = "Trebuchet MS" | |
| strFontHeading4 = "Trebuchet MS" | |
| strFontTitle = "Trebuchet MS" | |
| strFontTOC1 = "Trebuchet MS" | |
| strFontTOC2 = "Trebuchet MS" | |
| strFontTOC3 = "Trebuchet MS" | |
| strFontHeader = "Arial" | |
| strFontFooter = "Arial" | |
| Dim nBaseFontSize | |
| '========================================================== | |
| '========================================================== | |
| ' Variable Declarations and Constants | |
| ' A few counters are always handy | |
| Dim i, j | |
| ' Variables for the Win32_BIOS class | |
| Dim strBIOS_SMBIOSBIOSVersion, strBIOS_SMBIOSMajorVersion, strBIOS_SMBIOSMinorVersion, strBIOS_Version | |
| Dim arrBIOS_BiosCharacteristics | |
| Dim strBiosCharacteristics | |
| ReDim arrBIOS_BiosCharacteristics(0) | |
| ' Variables for the Win32_Win32_CDROMDrive class | |
| Dim objDbrCDROMDrive | |
| ' Variables for the Win32_ComputerSystem class | |
| Dim strComputerSystem_Name, strComputerSystem_TotalPhysicalMemory, strComputerSystem_Domain, nComputerSystem_DomainRole | |
| Dim strTotalPhysicalMemoryMB, strDomainType, strComputerRole | |
| ' Variables for the Win32_ComputerSystemProduct class | |
| Dim strComputerSystemProduct_Manufacturer, strComputerSystemProduct_Name, strComputerSystemProduct_IdentifyingNumber | |
| ' Variables For the Win32_DiskDrive, Win32_DiskPartition and Win32_LogicalDisk classes | |
| Dim objDbrDrives, objDbrDisks, objDiskPartitions, objDiskPartition, objLogicalDisks, objLogicalDisk | |
| ' Variables for the Win32_Group class | |
| Dim objDbrLocalGroups | |
| ' Variables for the Win32_GroupUser class | |
| Dim objDbrGroupUser | |
| ' Variables for the Win32_IP4RouteTable class | |
| Dim objDbrIP4RouteTable | |
| ' Variables for the Win32_NetworkAdapterConfiguration Class | |
| Dim nMaxNetworkAdapters | |
| nMaxNetworkAdapters = 50 | |
| Dim arrNetadapter_Description, arrNetadapter_MACAddress, arrNetadapter_DNSHostName, arrNetadapter_DHCPEnabled | |
| Dim arrNetadapter_DHCPServer, arrNetadapter_WINSPrimaryServer, arrNetadapter_WINSSecondaryServer, arrNetadapter_IPAddress | |
| Dim arrNetadapter_IPSubnet, arrNetadapter_DefaultIPGateway, arrNetadapter_DNSServerSearchOrder, arrNetadapter_DNS | |
| ReDim arrNetadapter_Description(0), arrNetadapter_MACAddress(0), arrNetadapter_DNSHostName(0), arrNetadapter_DHCPEnabled(0) | |
| ReDim arrNetadapter_DHCPServer(0), arrNetadapter_DNS(0), arrNetadapter_WINSPrimaryServer(0), arrNetadapter_WINSSecondaryServer(0) | |
| ReDim arrNetadapter_IPAddress(nMaxNetworkAdapters,0), arrNetadapter_IPSubnet(nMaxNetworkAdapters,0) | |
| ReDim arrNetadapter_DefaultIPGateway(nMaxNetworkAdapters,0), arrNetadapter_DNSServerSearchOrder(nMaxNetworkAdapters,0) | |
| Dim strDNSServers | |
| ' Variables for the Win32_NTEventLogFile Class | |
| Dim objDbrEventLogFile | |
| ' Variables for the Win32_OperatingSystems Class | |
| Dim strOperatingSystem_InstallDate, strOperatingSystem_Caption, strOperatingSystem_ServicePack, strOperatingSystem_WindowsDirectory | |
| Dim strOperatingSystem_LanguageCode, arrOperatingSystem_Name | |
| ' Variables for the Win32_PageFile Class | |
| Dim objDbrPagefile | |
| ' Variables for the Win32_PhysicalMemory Class | |
| Dim objDbrPhysicalMemory | |
| ' Variables for the Win32_Printer class | |
| Dim objDbrPrinters | |
| ' Variables for the Win32_Process class | |
| Dim objDbrProcess | |
| ' Variables for the Win32_Processor class | |
| Dim strProcessor_MaxClockSpeed, strProcessor_L2CacheSize, strProcessor_Name, strProcessor_Description, strProcessor_ExtClock | |
| Dim objDbrProcessorSockets, bProcessorHTSystem, intProcessors | |
| ' Variables for the Win32_Product class | |
| Dim objDbrProducts | |
| ' Variables for the Win32_Registry class | |
| Dim nCurrentSize, nMaximumSize | |
| ' Variables for the Win32_Services class | |
| Dim objDbrServices | |
| ' Variables for the Win32_Share class | |
| Dim objDbrShares | |
| ' Variables for the Win32_SoundDevice class | |
| Dim objDbrSoundDevice | |
| ' Variables for the Win32_StartupCommand class | |
| Dim objDbrStartupCommand | |
| ' Variables for the Win32_SystemEnclosure class | |
| Dim nChassisType, strChassisType | |
| ' Variables for the Win32_TapeDrive class | |
| Dim objDbrTapeDrive, bHasTapeDrive | |
| ' Variables for the Win32_TimeZone class | |
| Dim strTimeZone | |
| ' Variables for the Win32_QuickFixEngineering Class | |
| Dim objDbrPatches | |
| ' Variables for the Win32_UserAccount class | |
| Dim objDbrLocalAccounts | |
| ' Variables for the Win32_VideoController class | |
| Dim objDbrVideoController | |
| ' Variables from registry | |
| Dim objDbrWindowsComponents, strWindowsComponentsClass | |
| Dim objDbrRegPrograms | |
| Dim strPrimaryDomain, strPrintSpoolLocation | |
| Dim strLastUser, strLastUserDomain | |
| Dim dictProductKeys, objDbrRegProductKeys | |
| ' Variables for IIS Server | |
| Dim objDbrIISWebServerSetting, objDbrIISWebServerBindings | |
| Dim objDbrIISVirtualDirSetting | |
| ' Variables for System Roles | |
| Dim bRoleDC, bRoleDHCP, bRoleDNS, bRoleFile, bRoleFTP, bRoleIAS | |
| Dim bRoleMediaServer, bRoleNews, bRolePKI, bRolePrint, bRoleRAS | |
| Dim bRoleRIS, bRoleSMTP, bRoleSQL, bRoleTS, bRoleWINS, bRoleWWW | |
| Dim objDbrSystemRoles, nTerminalServerMode | |
| ' Variables to handle different versions of Windows | |
| Dim nOperatingSystemLevel | |
| ' Variables for other WMI Providers | |
| Dim bHasMicrosoftIISv2 | |
| bHasMicrosoftIISv2 = False | |
| ' Objects for WMI and Word | |
| Dim objWMIService, colItems, objItem, oReg | |
| Dim oWord, oListTemplate | |
| ' Variables for routines | |
| Dim errGatherWMIInformation, errGatherRegInformation, errWin32_Product | |
| Dim bAllowErrors | |
| errGatherWMIInformation = False | |
| errGatherRegInformation = False | |
| ' Variables for script options | |
| ' WMI | |
| Dim bWMIBios, bWMIRegistry, bWMIApplications,bWMIPatches,bWMIFileShares, bWMIServices, bWMIPrinters | |
| Dim bWMIEventLogFile, bWMILocalAccounts, bWMILocalGroups, bWMIIP4Routes, bWMIRunningProcesses | |
| Dim bWMIHardware, bWMIStartupCommands | |
| ' Registry | |
| Dim bRegDomainSuffix, bRegWindowsComponents, bRegPrintSpoolLocation, bRegLastUser, bRegProductKeys | |
| Dim bRegPrograms, bDoRegistryCheck | |
| ' Username and Password | |
| Dim strUserName, strPassword | |
| ' Other | |
| Dim bInvalidArgument, bDisplayHelp, bAlternateCredentials, bCheckVersion | |
| ' Word | |
| Dim bShowWord, bWordExtras, bUseDOTFile, bSaveFile, bUseSpecificTable | |
| Dim strDOTFile, strWordTable | |
| ' Export Options | |
| Dim strExportFormat, strSaveFile | |
| ' XML Options | |
| Dim strStylesheet, strXSLFreeText | |
| ' HTTP Options | |
| Dim strWebaccount, strWebUrl | |
| ' Awdit Options | |
| Dim strAwditLocation, strWebKey | |
| strAwditLocation = "" | |
| ' Constants | |
| Const adVarChar = 200 | |
| Const MaxCharacters = 255 | |
| '========================================================== | |
| '========================================================== | |
| ' Main Body | |
| If LCase (Right (WScript.FullName, 11)) <> "cscript.exe" Then | |
| MsgBox "This script should be run from a command line (eg ""cscript.exe sydi-server.vbs"")", vbCritical, "Error" | |
| WScript.Quit | |
| End If | |
| ' Get Options from user | |
| GetOptions | |
| If (bInvalidArgument) Then | |
| WScript.Echo "Invalid Arguments" & VbCrLf | |
| bDisplayHelp = True | |
| End If | |
| If (bDisplayHelp) Then | |
| DisplayHelp | |
| Else | |
| If (bCheckVersion) Then | |
| CheckVersion | |
| End If | |
| If (strComputer = "") Then | |
| strComputer = InputBox("What Computer do you want to document (default=localhost)","Select Target",".") | |
| End If | |
| If (strComputer <> "") Then | |
| ' Run the GatherWMIInformation() function and return the status | |
| ' to errGatherInformation, if the function fails then the | |
| ' rest is skipped. The same applies to GatherRegInformation | |
| ' if it is successful we place the information in a | |
| ' new word document | |
| errGatherWMIInformation = GatherWMIInformation() | |
| If (errGatherWMIInformation) Then | |
| If (bDoRegistryCheck) Then | |
| errGatherRegInformation = GatherRegInformation | |
| End If | |
| GetWMIProviderList | |
| Else | |
| WScript.Quit(999) | |
| End If | |
| If (bHasMicrosoftIISv2) Then ' Does the system have the WMI IIS Provider | |
| GatherIISInformation | |
| End If | |
| SystemRolesSet | |
| If (errGatherWMIInformation) Then | |
| Select Case strExportFormat | |
| Case "word" | |
| PopulateWordfile | |
| Case "xml" | |
| PopulateXMLFile | |
| Case "http" | |
| PopulateHttp | |
| Case "awdit" | |
| PopulateAwdit | |
| End Select | |
| End If | |
| End If | |
| End If | |
| '========================================================== | |
| '========================================================== | |
| ' Procedures | |
| ' Date conversion - http://classicasp.aspfaq.com/date-time-routines-manipulation/can-i-make-vbscript-format-dates-for-me.html | |
| Function pd(n, totalDigits) | |
| if totalDigits > len(n) then | |
| pd = String(totalDigits-len(n),"0") & n | |
| else | |
| pd = n | |
| end if | |
| End Function | |
| Function ConvertDateToShortUTC(lDate) | |
| ConvertDateToShortUTC = pd(Year(lDate),2) & pd(Month(lDate),2) & pd(Day(lDate),2) & pd(Hour(lDate),2) & pd(Minute(lDate),2) & pd(Second(lDate),2) | |
| End Function | |
| Sub CheckVersion | |
| Dim strURLSydiVersioncheck | |
| Dim objHTTP | |
| strURLSydiVersioncheck="http://sydi.sourceforge.net/versions.php?package=sydi-server" | |
| Set objHTTP = CreateObject("MSXML2.XMLHTTP") | |
| Call objHTTP.Open("GET", strURLSydiVersioncheck, FALSE) | |
| objHTTP.Send | |
| If (strScriptVersion = objHTTP.ResponseText) Then | |
| WScript.echo "You have the latest version (v." & strScriptVersion & ")" | |
| Else | |
| wscript.echo "A new version of SYDI-Server has been released!" | |
| wscript.echo "Your version: v." & strScriptVersion | |
| wscript.echo "Latest version: v." & objHTTP.ResponseText | |
| wscript.echo "Download it from http://sydiproject.com/" | |
| End If | |
| Wscript.Quit | |
| End Sub ' CheckVersion | |
| 'Function ConvertWMIDate(dUTCDate) | |
| ' ' This is a standard function to convert WMI time to "normal" time. | |
| ' ConvertWMIDate = CDate(Mid(dUTCDate, 5, 2) & "/" & Mid(dUTCDate, 7, 2) & "/" & Left(dUTCDate, 4) & " " & _ | |
| ' Mid (dUTCDate, 9, 2) & ":" & Mid(dUTCDate, 11, 2) & ":" & Mid(dUTCDate, 13, 2)) | |
| 'End Function | |
| Function ConvertWMIDate(dUTCDate) | |
| ' This is a standard function to convert WMI time to "normal" time. | |
| ConvertWMIDate = Left(dUTCDate,14) | |
| End Function | |
| Sub CalculateProcessorSockets(strSocketDesignation) | |
| strSocketDesignation = Replace(strSocketDesignation,"'","") | |
| objDbrProcessorSockets.Filter = " SocketDesignation='" & strSocketDesignation & "'" | |
| If (objDbrProcessorSockets.Bof) Then | |
| objDbrProcessorSockets.AddNew | |
| objDbrProcessorSockets("SocketDesignation") = strSocketDesignation | |
| objDbrProcessorSockets("Count") = 1 | |
| objDbrProcessorSockets.Update | |
| Else | |
| objDbrProcessorSockets("Count") = objDbrProcessorSockets("Count") + 1 | |
| objDbrProcessorSockets.Update | |
| End If | |
| End Sub ' CalculateProcessorSockets | |
| Sub DisplayHelp | |
| WScript.Echo "SYDI-Server v." & strScriptVersion | |
| WScript.Echo "Usage: cscript.exe sydi-server.vbs [options]" | |
| WScript.Echo "Examples: cscript.exe sydi-server.vbs -wabes -rc -f10 -tSERVER1" | |
| WScript.Echo " cscript.exe sydi-server-vbs -ex -sh -o""H:\Server docs\DC1.xml -tDC1""" | |
| WScript.Echo "Gathering Options" | |
| WScript.Echo " -w - WMI Options (Default: -wabefghipPqrsSu)" | |
| WScript.Echo " a - Windows Installer Applications" | |
| WScript.Echo " b - BIOS Information" | |
| WScript.Echo " e - Event Log files" | |
| WScript.Echo " f - File Shares" | |
| WScript.Echo " g - Local Groups (on non DC machines)" | |
| WScript.Echo " h - Additional Hardware (ie. Video Controller)" | |
| WScript.Echo " i - IP Routes (XP and 2003 only)" | |
| WScript.Echo " p - Printers" | |
| WScript.Echo " P - Processes (running)" | |
| WScript.Echo " q - Installed Patches" | |
| WScript.Echo " r - Registry Size" | |
| WScript.Echo " s - Services" | |
| WScript.Echo " S - Startup Commands" | |
| WScript.Echo " u - Local User accounts (on non DC machines)" | |
| WScript.Echo " -r - Registry Options (Default: -racdklp)" | |
| WScript.Echo " a - Non Windows Installer Applications" | |
| WScript.Echo " c - Windows Components" | |
| WScript.Echo " d - FQDN Domain Name" | |
| WScript.Echo " k - Product Keys" | |
| WScript.Echo " l - Last Logged on user" | |
| WScript.Echo " p - Print Spooler Location" | |
| WScript.Echo " -t - Target Machine (Default: ask user)" | |
| WScript.Echo " -u - Username (To run with different credentials)" | |
| WScript.Echo " -p - Password (To run with different credentials, must be used with -u)" | |
| WScript.Echo "Output Options" | |
| WScript.Echo " -e - Export format" | |
| WScript.Echo " w - Microsoft Word (Default)" | |
| WScript.Echo " x - XML (has to be used with -o)" | |
| WScript.Echo " h - HTTP post to webserver (has to be used with -U, -P and -L)" | |
| WScript.Echo " a - Submit data to awdit (has to be used with -K, -A and -O)" | |
| WScript.Echo " -o - Save to file (-oc:\corpfiles\server1.doc, use in combination with -d" | |
| WScript.Echo " if you don't want to display word at all, use a Path or the file will" | |
| WScript.Echo " be placed in your default location usually 'My documents')" | |
| WScript.Echo " -oC:\corpfiles\server1.xml" | |
| WScript.Echo " WARNING USING -o WILL OVERWRITE TARGET FILE WITHOUT ASKING" | |
| WScript.Echo " -U - Username for HTTP server (optional)" | |
| WScript.Echo " -P - Password for HTTP server (optional)" | |
| WScript.Echo " -L - URL to post resulting XML to (if using HTTP export option)" | |
| WScript.Echo " -K - Awdit API key" | |
| WScript.Echo " -O - Awdit location (quoted string)" | |
| WScript.Echo " -A - Awdit account id" | |
| WScript.Echo "Word Options" | |
| WScript.Echo " -b - Use specific Word Table (-b""Table Contemporary""" | |
| WScript.Echo " or -b""Table List 4"")" | |
| WScript.Echo " -f - Base font size (Default: -f12)" | |
| WScript.Echo " -d - Don't display Word while writing (runs faster)" | |
| WScript.Echo " -n - No extras (minimize the text inside brackets)" | |
| WScript.Echo " -T - Use .dot file as template (-Tc:\corptemplates\server.dot, ignores -f)" | |
| WScript.Echo "XML Options" | |
| WScript.Echo " -s - XML Stylesheet" | |
| WScript.Echo " h - HTML" | |
| WScript.Echo " t - Free text (-stE:\Files\mytransform.xsl or -stCORP.xsl)" | |
| WScript.Echo "Other Options" | |
| WScript.Echo " -v - Check for latest version (requires Internet access)" | |
| WScript.Echo " -D - Debug mode, useful for reporting bugs" | |
| WScript.Echo VbCrLf | |
| WScript.Echo " -h - Display help" | |
| WScript.Echo VbCrLf | |
| End Sub ' DisplayHelp | |
| Function GatherIISInformation() | |
| If (bAllowErrors) Then | |
| On Error Resume Next | |
| End If | |
| Dim objItem2 | |
| Const WbemAuthenticationLevelPktPrivacy = 6 | |
| ReportProgress "Start subroutine: GatherIISInformation(" & strComputer & ")" | |
| Dim objSWbemLocator | |
| Dim arrGroupUser | |
| If (bAlternateCredentials) Then | |
| Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") | |
| objSWbemLocator.Security_.AuthenticationLevel = WbemAuthenticationLevelPktPrivacy | |
| Set objWMIService = objSWbemLocator.ConnectServer(strComputer,"root\MicrosoftIISv2",strUserName,strPassword) | |
| Else | |
| 'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\MicrosoftIISv2") | |
| Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") | |
| objSWbemLocator.Security_.AuthenticationLevel = WbemAuthenticationLevelPktPrivacy | |
| Set objWMIService = objSWbemLocator.ConnectServer(strComputer,"root\MicrosoftIISv2") | |
| End If | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strComputer & ")" | |
| Err.Clear | |
| GatherIISInformation = False | |
| Exit Function | |
| End If | |
| ReportProgress " Gathering Web Server Settings" | |
| Set colItems = objWMIService.ExecQuery("Select Name, ServerBindings, ServerComment from IISWebServerSetting","WQL",48) | |
| Set objDbrIISWebServerSetting = CreateObject("ADOR.RecordSet") | |
| objDbrIISWebServerSetting.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrIISWebServerSetting.Fields.Append "ServerComment", adVarChar, MaxCharacters | |
| objDbrIISWebServerSetting.Open | |
| Set objDbrIISWebServerBindings = CreateObject("ADOR.RecordSet") | |
| objDbrIISWebServerBindings.Fields.Append "ServerName", adVarChar, MaxCharacters | |
| objDbrIISWebServerBindings.Fields.Append "Hostname", adVarChar, MaxCharacters | |
| objDbrIISWebServerBindings.Fields.Append "IP", adVarChar, MaxCharacters | |
| objDbrIISWebServerBindings.Fields.Append "Port", adVarChar, MaxCharacters | |
| objDbrIISWebServerBindings.Open | |
| For Each objItem In colItems | |
| objDbrIISWebServerSetting.AddNew | |
| objDbrIISWebServerSetting("Name") = objItem.Name | |
| objDbrIISWebServerSetting("ServerComment") = objItem.ServerComment | |
| For Each objItem2 In objItem.ServerBindings | |
| objDbrIISWebServerBindings.AddNew | |
| objDbrIISWebServerBindings("ServerName") = objItem.Name | |
| objDbrIISWebServerBindings("Hostname") = objItem2.Hostname | |
| objDbrIISWebServerBindings("Ip") = objItem2.Ip | |
| objDbrIISWebServerBindings("Port") = objItem2.Port | |
| objDbrIISWebServerBindings.Update | |
| Next | |
| objDbrIISWebServerSetting.Update | |
| Next | |
| objDbrIISWebServerSetting.Sort = "ServerComment" | |
| ' Virtual Directories | |
| Set colItems = objWMIService.ExecQuery("Select Name, Path from IISWebVirtualDirSetting","WQL",48) | |
| Set objDbrIISVirtualDirSetting = CreateObject("ADOR.RecordSet") | |
| objDbrIISVirtualDirSetting.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrIISVirtualDirSetting.Fields.Append "Path", adVarChar, MaxCharacters | |
| objDbrIISVirtualDirSetting.Open | |
| For Each objItem In colItems | |
| objDbrIISVirtualDirSetting.AddNew | |
| objDbrIISVirtualDirSetting("Name") = objItem.Name | |
| objDbrIISVirtualDirSetting("Path") = objItem.Path | |
| objDbrIISVirtualDirSetting.Update | |
| Next | |
| ReportProgress "End subroutine: GatherIISInformation(" & strComputer & ")" | |
| End Function ' GatherIISInformation() | |
| Function GatherRegInformation() | |
| Dim arrRegValueNames, arrRegValueTypes | |
| Dim dwValue | |
| Dim objRegLocator, objRegService | |
| Dim arrRegPrograms, strRegProgram, strRegProgramsDisplayName, strRegProgramsDisplayVersion, strRegProgramsTmp | |
| Dim bRegProgramsSkip | |
| Dim objRegExp | |
| Dim dictProductKeyKeys, dictProductKeyItems, strCurrentProductKeyName | |
| Dim strProductKeyGUID, arrProductKeyGUID, arrDigitalProductID, iProductKey | |
| Const HKEY_LOCAL_MACHINE = &H80000002 | |
| If (bAllowErrors) Then | |
| On Error Resume Next | |
| End If | |
| ReportProgress VbCrLf & "Start subroutine: GatherRegInformation(" & strComputer & ")" | |
| If (bAlternateCredentials) Then | |
| Set objRegLocator = CreateObject("WbemScripting.SWbemLocator") | |
| Set objRegService = objRegLocator.ConnectServer(strComputer,"root\default",strUserName,strPassword) | |
| Set oReg = objRegService.Get("StdRegProv") | |
| Else | |
| Set oReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") | |
| End If | |
| If (Err <> 0) Then | |
| Wscript.Echo Err.Number & " -- " & Err.Description | |
| Err.Clear | |
| GatherRegInformation = False | |
| Exit Function | |
| End If | |
| If (bRegDomainSuffix) Then | |
| ReportProgress " Reading domain information" | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters","Domain", strPrimaryDomain | |
| End If | |
| If (bRegPrintSpoolLocation) Then | |
| ReportProgress " Reading print spool location" | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Print\Printers","DefaultSpoolDirectory", strPrintSpoolLocation | |
| End If | |
| ' Checking Terminal Server Settings | |
| oReg.GetDwordValue HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Terminal Server","TSAppCompat", nTerminalServerMode | |
| If (bRegPrograms) Then | |
| ReportProgress " Reading Programs from Registry" | |
| Set objDbrRegPrograms = CreateObject("ADOR.Recordset") | |
| objDbrRegPrograms.Fields.Append "DisplayName", adVarChar, MaxCharacters | |
| objDbrRegPrograms.Fields.Append "DisplayVersion", adVarChar, MaxCharacters | |
| objDbrRegPrograms.Open | |
| Set objRegExp = New RegExp | |
| oReg.EnumKey HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",arrRegPrograms | |
| For Each strRegProgram In arrRegPrograms | |
| bRegProgramsSkip = False | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & strRegProgram, "DisplayName", strRegProgramsDisplayName | |
| ' Remove programs without Display Name | |
| If (IsNull(strRegProgramsDisplayName)) Then : bRegProgramsSkip = True : End If | |
| ' Remove MSI applications | |
| If (Len(strRegProgram) = 38) Then | |
| strRegProgramsTmp = Left(strRegProgram,1) & Right(strRegProgram,1) | |
| If (strRegProgramsTmp = "{}") Then : bRegProgramsSkip = True : End If | |
| End If | |
| ' Remove Patches | |
| objRegExp.IgnoreCase = True | |
| objRegExp.Pattern = "KB\d{6}" | |
| strRegProgramsTmp = objRegExp.Test(strRegProgram) | |
| If (strRegProgramsTmp) Then : bRegProgramsSkip = True : End If | |
| objRegExp.Pattern = "Q\d{6}" | |
| strRegProgramsTmp = objRegExp.Test(strRegProgram) | |
| If (strRegProgramsTmp) Then : bRegProgramsSkip = True : End If | |
| If Not (bRegProgramsSkip) Then | |
| objDbrRegPrograms.AddNew | |
| objDbrRegPrograms("DisplayName") = strRegProgramsDisplayName | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & strRegProgram, "DisplayVersion", strRegProgramsDisplayVersion | |
| objDbrRegPrograms("DisplayVersion") = Scrub(strRegProgramsDisplayVersion) | |
| objDbrRegPrograms.Update | |
| End If | |
| Next | |
| objDbrRegPrograms.Sort = "DisplayName" | |
| End If | |
| If (bRegProductKeys) Then | |
| Set dictProductKeys = CreateObject("Scripting.Dictionary") | |
| dictProductKeys.Add "Microsoft Exchange", "SOFTWARE\Microsoft\Exchange\Setup\" | |
| dictProductKeys.Add "Microsoft Office XP", "SOFTWARE\Microsoft\Office\10.0\Registration\" | |
| dictProductKeys.Add "Microsoft Office 2003", "SOFTWARE\Microsoft\Office\11.0\Registration\" | |
| dictProductKeys.Add "Microsoft Office 2007", "SOFTWARE\Microsoft\Office\12.0\Registration\" | |
| dictProductKeys.Add "Microsoft Windows", "SOFTWARE\Microsoft\Windows NT\CurrentVersion\" | |
| Set objDbrRegProductKeys = CreateObject("ADOR.Recordset") | |
| objDbrRegProductKeys.Fields.Append "ProductName", adVarChar, MaxCharacters | |
| objDbrRegProductKeys.Fields.Append "ProductKey", adVarChar, MaxCharacters | |
| objDbrRegProductKeys.Open | |
| dictProductKeyKeys = dictProductKeys.Keys | |
| dictProductKeyItems = dictProductKeys.Items | |
| For iProductKey = 0 To dictProductKeys.Count -1 | |
| oReg.GetBinaryValue HKEY_LOCAL_MACHINE, dictProductKeyItems(iProductKey), "DigitalProductID", arrDigitalProductID | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE, dictProductKeyItems(iProductKey), "ProductName", strCurrentProductKeyName | |
| If IsNull(arrDigitalProductID) Then | |
| oReg.EnumKey HKEY_LOCAL_MACHINE, dictProductKeyItems(iProductKey), arrProductKeyGUID | |
| If Not IsNull(arrProductKeyGUID) Then | |
| For Each strProductKeyGUID In arrProductKeyGUID | |
| oReg.GetBinaryValue HKEY_LOCAL_MACHINE, dictProductKeyItems(iProductKey) & strProductKeyGUID, "DigitalProductID", arrDigitalProductID | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE, dictProductKeyItems(iProductKey) & strProductKeyGUID, "ProductName", strCurrentProductKeyName | |
| If Not IsNull(arrDigitalProductID) Then | |
| If (IsNull(strCurrentProductKeyName)) Then | |
| GetProductKey arrDigitalProductID, dictProductKeyKeys(iProductKey) | |
| Else | |
| GetProductKey arrDigitalProductID, strCurrentProductKeyName | |
| End If | |
| End If | |
| Next | |
| End If | |
| Else | |
| If (IsNull(strCurrentProductKeyName)) Then | |
| GetProductKey arrDigitalProductID, dictProductKeyKeys(iProductKey) | |
| Else | |
| GetProductKey arrDigitalProductID, strCurrentProductKeyName | |
| End If | |
| End If | |
| Next | |
| End If | |
| If (bRegLastUser) Then | |
| ReportProgress " Reading last user" | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon","DefaultDomainName", strLastUserDomain | |
| oReg.GetStringValue HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon","DefaultUserName", strLastUser | |
| If (Len(strLastUserDomain) > 0) Then | |
| strLastUser = strLastUserDomain & "\" & strLastUser | |
| End If | |
| End If | |
| If (bRegWindowsComponents) Then | |
| ReportProgress " Reading Windows Components information" | |
| Set objDbrWindowsComponents = CreateObject("ADOR.Recordset") | |
| objDbrWindowsComponents.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrWindowsComponents.Fields.Append "DisplayName", adVarChar, MaxCharacters | |
| objDbrWindowsComponents.Fields.Append "Class", adVarChar, MaxCharacters | |
| objDbrWindowsComponents.Fields.Append "ClassName", adVarChar, MaxCharacters | |
| objDbrWindowsComponents.Fields.Append "Level", adVarChar, MaxCharacters | |
| objDbrWindowsComponents.Open | |
| oReg.EnumValues HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OC Manager\Subcomponents", arrRegValueNames, arrRegValueTypes | |
| For i=0 To Ubound(arrRegValueNames) | |
| oReg.GetDWORDValue HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OC Manager\Subcomponents",arrRegValueNames(i), dwValue | |
| If (dwValue = 1) Then | |
| ReturnWindowsComponentName arrRegValueNames(i) | |
| End If | |
| Next | |
| objDbrWindowsComponents.Sort = "Class, DisplayName" | |
| End If | |
| ReportProgress "End subroutine: GatherRegInformation()" | |
| GatherRegInformation = True | |
| End Function ' GatherRegInformation | |
| Function GatherWMIInformation() | |
| Dim dwUTCPlaceHolder | |
| If (bAllowErrors) Then | |
| On Error Resume Next | |
| End If | |
| ReportProgress "Start subroutine: GatherWMIInformation(" & strComputer & ")" | |
| Dim objSWbemLocator | |
| Dim arrGroupUser | |
| If (bAlternateCredentials) Then | |
| Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") | |
| Set objWMIService = objSWbemLocator.ConnectServer(strComputer,"root\cimv2",strUserName,strPassword) | |
| Else | |
| Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") | |
| End If | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strComputer & ")" | |
| Err.Clear | |
| GatherWMIInformation = False | |
| Exit Function | |
| End If | |
| ReportProgress " Gathering OS information" | |
| Set colItems = objWMIService.ExecQuery("Select Name, CSDVersion, InstallDate, OSLanguage, Version, WindowsDirectory from Win32_OperatingSystem",,48) | |
| For Each objItem in colItems | |
| strOperatingSystem_InstallDate = objItem.InstallDate | |
| arrOperatingSystem_Name = Split(objItem.Name,"|") | |
| strOperatingSystem_Caption = arrOperatingSystem_Name(0) | |
| strOperatingSystem_ServicePack = objItem.CSDVersion | |
| strOperatingSystem_LanguageCode = Clng(objItem.OSLanguage) | |
| strOperatingSystem_LanguageCode = Hex(strOperatingSystem_LanguageCode) | |
| nOperatingSystemLevel = objItem.Version | |
| strOperatingSystem_WindowsDirectory = objItem.WindowsDirectory | |
| Next | |
| nOperatingSystemLevel = Mid(nOperatingSystemLevel,1,1) & Mid(nOperatingSystemLevel,3,1) ' 50 for Win2k 51 for XP | |
| If (bWMIBios) Then | |
| ReportProgress " Gathering BIOS information" | |
| Set colItems = objWMIService.ExecQuery("Select BiosCharacteristics, SMBIOSBIOSVersion, SMBIOSMajorVersion, SMBIOSMinorVersion, Version from Win32_BIOS",,48) | |
| For Each objItem in colItems | |
| strBIOS_SMBIOSBIOSVersion = objItem.SMBIOSBIOSVersion | |
| strBIOS_SMBIOSMajorVersion = objItem.SMBIOSMajorVersion | |
| strBIOS_SMBIOSMinorVersion = objItem.SMBIOSMinorVersion | |
| strBIOS_Version = objItem.Version | |
| arrBIOS_BiosCharacteristics(0) = 3 | |
| If (IsArray(objItem.BiosCharacteristics)) Then | |
| For i = 0 To Ubound(objItem.BiosCharacteristics) | |
| ReDim Preserve arrBIOS_BiosCharacteristics(i) | |
| arrBIOS_BiosCharacteristics(i) = objItem.BiosCharacteristics(i) | |
| Next | |
| End If | |
| Next | |
| End If | |
| ReportProgress " Gathering computer system information" | |
| Set colItems = objWMIService.ExecQuery("Select Domain, DomainRole, Name, TotalPhysicalMemory from Win32_ComputerSystem",,48) | |
| For Each objItem in colItems | |
| strComputerSystem_Domain = objItem.Domain | |
| nComputerSystem_DomainRole = objItem.DomainRole | |
| strComputerSystem_Name = objItem.Name | |
| strComputerSystem_TotalPhysicalMemory = objItem.TotalPhysicalMemory | |
| strTotalPhysicalMemoryMB = Round(strComputerSystem_TotalPhysicalMemory / 1024 / 1024) | |
| Select Case nComputerSystem_DomainRole | |
| Case 0 | |
| strComputerRole = "Standalone Workstation" : strDomainType = "workgroup" | |
| Case 1 | |
| strComputerRole = "Member Workstation" : strDomainType = "domain" | |
| Case 2 | |
| strComputerRole = "Standalone Server" : strDomainType = "workgroup" | |
| Case 3 | |
| strComputerRole = "Member Server" : strDomainType = "domain" | |
| Case 4 | |
| bWMILocalAccounts = False | |
| bWMILocalGroups = False | |
| strComputerRole = "Domain Controller" : strDomainType = "domain" | |
| bRoleDC = True | |
| Case 5 | |
| bWMILocalAccounts = False | |
| bWMILocalGroups = False | |
| strComputerRole = "Domain Controller (PDC Emulator)" : strDomainType = "domain" | |
| bRoleDC = True | |
| End Select | |
| Next | |
| ReportProgress " Gathering CD-ROM Information" | |
| Set colItems = objWMIService.ExecQuery("Select Drive, Manufacturer, Name from Win32_CDROMDrive",,48) | |
| Set objDbrCDROMDrive = CreateObject("ADOR.RecordSet") | |
| objDbrCDROMDrive.Fields.Append "Drive", adVarChar, MaxCharacters | |
| objDbrCDROMDrive.Fields.Append "Manufacturer", adVarChar, MaxCharacters | |
| objDbrCDROMDrive.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrCDROMDrive.Open | |
| For Each objItem in colItems | |
| objDbrCDROMDrive.AddNew | |
| objDbrCDROMDrive("Drive") = objItem.Drive | |
| objDbrCDROMDrive("Manufacturer") = objItem.Manufacturer | |
| objDbrCDROMDrive("Name") = objItem.Name | |
| objDbrCDROMDrive.Update | |
| Next | |
| objDbrCDROMDrive.Sort = "Drive" | |
| ReportProgress " Gathering computer system product information" | |
| Set colItems = objWMIService.ExecQuery("Select Vendor, Name, IdentifyingNumber from Win32_ComputerSystemProduct",,48) | |
| For Each objItem in colItems | |
| strComputerSystemProduct_Manufacturer = objItem.Vendor | |
| strComputerSystemProduct_Name = objItem.Name | |
| strComputerSystemProduct_IdentifyingNumber = objItem.IdentifyingNumber | |
| Next | |
| ReportProgress " Gathering disk information" | |
| Set colItems = objWMIService.ExecQuery ("SELECT Caption, DeviceID, Interfacetype, Size FROM Win32_DiskDrive") | |
| Set objDbrDrives = CreateObject("ADOR.Recordset") | |
| objDbrDrives.Fields.Append "Caption", adVarChar, MaxCharacters | |
| objDbrDrives.Fields.Append "DeviceID", adVarChar, MaxCharacters | |
| objDbrDrives.Fields.Append "InterfaceType", adVarChar, MaxCharacters | |
| objDbrDrives.Fields.Append "Size", adVarChar, MaxCharacters | |
| objDbrDrives.Open | |
| Set objDbrDisks = CreateObject("ADOR.Recordset") | |
| objDbrDisks.Fields.Append "Caption", adVarChar, MaxCharacters | |
| objDbrDisks.Fields.Append "Size", adVarChar, MaxCharacters | |
| objDbrDisks.Fields.Append "FileSystem", adVarChar, MaxCharacters | |
| objDbrDisks.Fields.Append "FreeSpace", adVarChar, MaxCharacters | |
| objDbrDisks.Fields.Append "VolumeName", adVarChar, MaxCharacters | |
| objDbrDisks.Fields.Append "ParentDriveID", adVarChar, MaxCharacters | |
| objDbrDisks.Open | |
| For Each objItem In colItems | |
| objDbrDrives.AddNew | |
| objDbrDrives("Caption") = objItem.Caption | |
| objDbrDrives("DeviceID") = objItem.DeviceID | |
| objDbrDrives("InterfaceType") = Scrub(objItem.InterfaceType) | |
| If (IsNull(objItem.Size)) Then | |
| objDbrDrives("Size") = "" | |
| Else | |
| objDbrDrives("Size") = objItem.Size | |
| End If | |
| Set objDiskPartitions = objItem.Associators_("Win32_DiskDriveToDiskPartition", "Win32_DiskPartition") | |
| For Each objDiskPartition In objDiskPartitions | |
| Set objLogicalDisks = objDiskPartition.Associators_("Win32_LogicalDiskToPartition", "Win32_LogicalDisk") | |
| For Each objLogicalDisk In objLogicalDisks | |
| objDbrDisks.AddNew | |
| objDbrDisks("Caption") = objLogicalDisk.Caption | |
| objDbrDisks("Size") = objLogicalDisk.Size | |
| objDbrDisks("FileSystem") = objLogicalDisk.FileSystem | |
| objDbrDisks("FreeSpace") = objLogicalDisk.FreeSpace | |
| objDbrDisks("VolumeName") = objLogicalDisk.VolumeName | |
| objDbrDisks("ParentDriveID") = objItem.DeviceID | |
| objDbrDisks.Update | |
| Next | |
| Next | |
| objDbrDrives.Update | |
| Next | |
| If (bWMILocalGroups) Then | |
| ReportProgress " Gathering local groups" | |
| Set colItems = objWMIService.ExecQuery("Select Name from Win32_Group Where Domain='" & strComputerSystem_Name & "'",,48) | |
| Set objDbrLocalGroups = CreateObject("ADOR.Recordset") | |
| objDbrLocalGroups.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrLocalGroups.Open | |
| For Each objItem in colItems | |
| objDbrLocalGroups.AddNew | |
| objDbrLocalGroups("Name") = objItem.Name | |
| objDbrLocalGroups.Update | |
| Next | |
| objDbrLocalGroups.Sort = "Name" | |
| If Not (objDbrLocalGroups.Bof) Then | |
| objDbrLocalGroups.Movefirst | |
| ReportProgress " Gathering local group members" | |
| End If | |
| Set objDbrGroupUser = CreateObject("ADOR.Recordset") | |
| objDbrGroupUser.Fields.Append "Groupname", adVarChar, MaxCharacters | |
| objDbrGroupUser.Fields.Append "Member", adVarChar, MaxCharacters | |
| objDbrGroupUser.Open | |
| Do Until objDbrLocalGroups.Eof | |
| Set colItems = objWMIService.ExecQuery("Select * from Win32_GroupUser where GroupComponent=""Win32_Group.Domain='" & strComputerSystem_Name & "',Name='" & objDbrLocalGroups.Fields.Item("Name") & "'""",,48) | |
| For Each objItem in colItems | |
| objDbrGroupUser.AddNew | |
| objDbrGroupUser("Groupname") = objDbrLocalGroups.Fields.Item("Name") | |
| arrGroupUser = Split(objItem.PartComponent, """") | |
| objDbrGroupUser("Member") = arrGroupUser(1) & "\" & arrGroupUser(3) | |
| objDbrGroupUser.Update | |
| Next | |
| objDbrLocalGroups.Movenext | |
| Loop | |
| End If | |
| If (bWMIIP4Routes And nOperatingSystemLevel > 50) Then | |
| ReportProgress " Gathering IP Route information" | |
| Set colItems = objWMIService.ExecQuery("Select Destination, Mask, NextHop from Win32_IP4RouteTable",,48) | |
| Set objDbrIP4RouteTable = CreateObject("ADOR.Recordset") | |
| objDbrIP4RouteTable.Fields.Append "Destination", adVarChar, MaxCharacters | |
| objDbrIP4RouteTable.Fields.Append "Mask", adVarChar, MaxCharacters | |
| objDbrIP4RouteTable.Fields.Append "NextHop", adVarChar, MaxCharacters | |
| objDbrIP4RouteTable.Open | |
| For Each objItem in colItems | |
| objDbrIP4RouteTable.AddNew | |
| objDbrIP4RouteTable("Destination") = objItem.Destination | |
| objDbrIP4RouteTable("Mask") = objItem.Mask | |
| objDbrIP4RouteTable("NextHop") = objItem.NextHop | |
| objDbrIP4RouteTable.Update | |
| Next | |
| Else | |
| bWMIIP4Routes = False | |
| End If | |
| ReportProgress " Gathering network adapter configuration" | |
| Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True",,48) | |
| i = -1 | |
| For Each objItem in colItems | |
| i = i + 1 | |
| ReDim Preserve arrNetadapter_Description(i), arrNetadapter_MACAddress(i) | |
| ReDim Preserve arrNetadapter_DNSHostName(i) | |
| ReDim Preserve arrNetadapter_DHCPEnabled(i) | |
| ReDim Preserve arrNetadapter_DHCPServer(i) | |
| ReDim Preserve arrNetadapter_DNS(i) | |
| ReDim Preserve arrNetadapter_WINSPrimaryServer(i) | |
| ReDim Preserve arrNetadapter_WINSSecondaryServer(i) | |
| arrNetadapter_Description(i) = objItem.Description | |
| arrNetadapter_MACAddress(i) = objItem.MACAddress | |
| arrNetadapter_DNSHostName(i) = objItem.DNSHostName | |
| arrNetadapter_DHCPEnabled(i) = objItem.DHCPEnabled | |
| arrNetadapter_DHCPServer(i) = objItem.DHCPServer | |
| arrNetadapter_DNS(i) = objItem.DNSDomain | |
| arrNetadapter_WINSPrimaryServer(i) = objItem.WINSPrimaryServer | |
| arrNetadapter_WINSSecondaryServer(i) = objItem.WINSSecondaryServer | |
| If Not IsNull(objItem.IPAddress) Then | |
| For j = 0 To UBound(objItem.IPAddress) | |
| If (j > UBound(arrNetadapter_IPAddress,2)) Then | |
| ReDim Preserve arrNetadapter_IPAddress(nMaxNetworkAdapters,j) | |
| End If | |
| arrNetadapter_IPAddress(i,j) = objItem.IPAddress(j) | |
| Next | |
| End If | |
| If Not IsNull(objItem.IPSubnet) Then | |
| For j = 0 To UBound(objItem.IPSubnet) | |
| If (j > UBound(arrNetadapter_IPSubnet,2)) Then | |
| ReDim Preserve arrNetadapter_IPSubnet(nMaxNetworkAdapters,j) | |
| End If | |
| arrNetadapter_IPSubnet(i,j) = objItem.IPSubnet(j) | |
| Next | |
| End If | |
| If Not IsNull(objItem.DefaultIPGateway) Then | |
| For j = 0 To UBound(objItem.DefaultIPGateway) | |
| If (j > UBound(arrNetadapter_DefaultIPGateway,2)) Then | |
| ReDim Preserve arrNetadapter_DefaultIPGateway(nMaxNetworkAdapters,j) | |
| End If | |
| arrNetadapter_DefaultIPGateway(i,j) = objItem.DefaultIPGateway(j) | |
| Next | |
| End If | |
| If Not IsNull(objItem.DNSServerSearchOrder) Then | |
| For j = 0 To UBound(objItem.DNSServerSearchOrder) | |
| If (j > UBound(arrNetadapter_DNSServerSearchOrder,2)) Then | |
| ReDim Preserve arrNetadapter_DNSServerSearchOrder(nMaxNetworkAdapters,j) | |
| End If | |
| arrNetadapter_DNSServerSearchOrder(i,j) = objItem.DNSServerSearchOrder(j) | |
| Next | |
| End If | |
| Next | |
| If (bWMIEventLogFile) Then | |
| ReportProgress " Gathering event log settings" | |
| Set colItems = objWMIService.ExecQuery("Select LogFileName, MaxFileSize, Name, OverwritePolicy from Win32_NTEventLogFile",,48) | |
| Set objDbrEventLogFile = CreateObject("ADOR.RecordSet") | |
| objDbrEventLogFile.Fields.Append "LogFileName", adVarChar, MaxCharacters | |
| objDbrEventLogFile.Fields.Append "MaxFileSize", adVarChar, MaxCharacters | |
| objDbrEventLogFile.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrEventLogFile.Fields.Append "OverwritePolicy", adVarChar, MaxCharacters | |
| objDbrEventLogFile.Open | |
| For Each objItem in colItems | |
| objDbrEventLogFile.AddNew | |
| objDbrEventLogFile("LogFileName") = objItem.LogFileName | |
| objDbrEventLogFile("MaxFileSize") = objItem.MaxFileSize | |
| objDbrEventLogFile("Name") = objItem.Name | |
| objDbrEventLogFile("OverwritePolicy") = objItem.OverwritePolicy | |
| objDbrEventLogFile.Update | |
| Next | |
| objDbrEventLogFile.Sort = "LogFileName" | |
| End If | |
| ReportProgress " Gathering pagefile information" | |
| Set colItems = objWMIService.ExecQuery("Select Drive, InitialSize, MaximumSize from Win32_PageFile",,48) | |
| Set objDbrPagefile = CreateObject("ADOR.RecordSet") | |
| objDbrPagefile.Fields.Append "Drive", adVarChar, MaxCharacters | |
| objDbrPagefile.Fields.Append "InitialSize", adVarChar, MaxCharacters | |
| objDbrPagefile.Fields.Append "MaximumSize", adVarChar, MaxCharacters | |
| objDbrPagefile.Open | |
| For Each objItem in colItems | |
| objDbrPagefile.AddNew | |
| objDbrPagefile("Drive") = objItem.Drive | |
| objDbrPagefile("InitialSize") = objItem.InitialSize | |
| objDbrPagefile("MaximumSize") = objItem.MaximumSize | |
| objDbrPagefile.Update | |
| Next | |
| ReportProgress " Gathering information about physical memory" | |
| Set colItems = objWMIService.ExecQuery("Select BankLabel, Capacity, FormFactor, MemoryType from Win32_PhysicalMemory",,48) | |
| Set objDbrPhysicalMemory = CreateObject("ADOR.RecordSet") | |
| objDbrPhysicalMemory.Fields.Append "BankLabel", adVarChar, MaxCharacters | |
| objDbrPhysicalMemory.Fields.Append "Capacity", adVarChar, MaxCharacters | |
| objDbrPhysicalMemory.Fields.Append "FormFactor", adVarChar, MaxCharacters | |
| objDbrPhysicalMemory.Fields.Append "MemoryType", adVarChar, MaxCharacters | |
| objDbrPhysicalMemory.Open | |
| For Each objItem In colItems | |
| objDbrPhysicalMemory.AddNew | |
| objDbrPhysicalMemory("BankLabel") = objItem.BankLabel | |
| objDbrPhysicalMemory("Capacity") = objItem.Capacity | |
| objDbrPhysicalMemory("FormFactor") = objItem.FormFactor | |
| objDbrPhysicalMemory("MemoryType") = objItem.MemoryType | |
| objDbrPhysicalMemory.Update | |
| Next | |
| objDbrPhysicalMemory.Sort = "BankLabel" | |
| If (bWMIPrinters) Then | |
| ReportProgress " Gathering printer information" | |
| Set colItems = objWMIService.ExecQuery("Select DriverName, Name, PortName from Win32_Printer Where ServerName = Null",,48) | |
| Set objDbrPrinters = CreateObject("ADOR.Recordset") | |
| objDbrPrinters.Fields.Append "DriverName", adVarChar, MaxCharacters | |
| objDbrPrinters.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrPrinters.Fields.Append "PortName", adVarChar, MaxCharacters | |
| objDbrPrinters.Open | |
| For Each objItem In colItems | |
| objDbrPrinters.AddNew | |
| objDbrPrinters("Drivername") = objItem.DriverName | |
| objDbrPrinters("Name") = objItem.Name | |
| objDbrPrinters("Portname") = objItem.PortName | |
| objDbrPrinters.Update | |
| Next | |
| objDbrPrinters.Sort = "Name" | |
| End If | |
| If (bWMIRunningProcesses) Then | |
| ReportProgress " Gathering process information" | |
| Set colItems = objWMIService.ExecQuery("Select Caption, ExecutablePath from Win32_Process",,48) | |
| Set objDbrProcess = CreateObject("ADOR.Recordset") | |
| objDbrProcess.Fields.Append "Caption", adVarChar, MaxCharacters | |
| objDbrProcess.Fields.Append "ExecutablePath", adVarChar, MaxCharacters | |
| objDbrProcess.Open | |
| For Each objItem In colItems | |
| objDbrProcess.AddNew | |
| objDbrProcess("Caption") = Scrub(objItem.Caption) | |
| objDbrProcess("ExecutablePath") = Scrub(objItem.ExecutablePath) | |
| objDbrProcess.Update | |
| Next | |
| objDbrProcess.Sort = "Caption" | |
| End If | |
| ReportProgress " Gathering processor information" | |
| Set colItems = objWMIService.ExecQuery("Select Description, ExtClock, L2CacheSize, Name, MaxClockSpeed, SocketDesignation from Win32_Processor",,48) | |
| Set objDbrProcessorSockets = CreateObject("ADOR.Recordset") | |
| objDbrProcessorSockets.Fields.Append "SocketDesignation", adVarChar, MaxCharacters | |
| objDbrProcessorSockets.Fields.Append "Count", adVarChar, MaxCharacters | |
| objDbrProcessorSockets.Open | |
| i = 0 | |
| For Each objItem in colItems | |
| i = i + 1 | |
| strProcessor_L2CacheSize = objItem.L2CacheSize | |
| strProcessor_ExtClock = objItem.ExtClock | |
| strProcessor_Name = objItem.Name | |
| strProcessor_Description = objItem.Description | |
| strProcessor_MaxClockSpeed = objItem.MaxClockSpeed | |
| CalculateProcessorSockets Scrub(objItem.SocketDesignation) | |
| Next | |
| ' Remove filter | |
| objDbrProcessorSockets.Filter = " Count > 0 " | |
| intProcessors = objDbrProcessorSockets.Recordcount | |
| If (i > objDbrProcessorSockets.Recordcount) Then | |
| bProcessorHTSystem = True | |
| Else | |
| bProcessorHTSystem = False | |
| End If | |
| Err.Clear | |
| If (bWMIApplications) Then | |
| ReportProgress " Gathering application information" | |
| Set colItems = objWMIService.ExecQuery("Select Name, Vendor, Version, InstallDate from Win32_Product WHERE Name <> Null",,48) | |
| Set objDbrProducts = CreateObject("ADOR.Recordset") | |
| objDbrProducts.Fields.Append "ProductName", adVarChar, MaxCharacters | |
| objDbrProducts.Fields.Append "Vendor", adVarChar, MaxCharacters | |
| objDbrProducts.Fields.Append "Version", adVarChar, MaxCharacters | |
| objDbrProducts.Fields.Append "InstallDate", adVarChar, MaxCharacters | |
| objDbrProducts.Open | |
| For Each objItem In colItems | |
| If (Err <> 0) Then | |
| ReportProgress " " & Err.Number & " -- " & Err.Description & " (" & strComputer & ")" | |
| ReportProgress " Win32_Product class is not installed (Windows Installer Applications will not appear)" | |
| ReportProgress " You can add it with Add/Remove Windows Components -> Management and Monitoring -> WMI Windows Installer Provider" | |
| Err.Clear | |
| errWin32_Product = False | |
| Exit For | |
| Else | |
| errWin32_Product = True | |
| End If | |
| objDbrProducts.AddNew | |
| objDbrProducts("ProductName") = objItem.Name | |
| If (IsNull(objItem.Vendor)) Then | |
| objDbrProducts("Vendor") = "" | |
| Else | |
| objDbrProducts("Vendor") = objItem.Vendor | |
| End If | |
| objDbrProducts("Version") = Scrub(objItem.Version) | |
| If (IsNull(objItem.InstallDate)) Then | |
| objDbrProducts("InstallDate") = "N/A" | |
| Else | |
| objDbrProducts("InstallDate") = objItem.InstallDate | |
| End If | |
| objDbrProducts.Update | |
| Next | |
| objDbrProducts.Sort = "ProductName" | |
| End If | |
| If (bWMIRegistry) Then | |
| ReportProgress " Gathering registry size information" | |
| Set colItems = objWMIService.ExecQuery("Select CurrentSize, MaximumSize from Win32_Registry",,48) | |
| For Each objItem In colItems | |
| nCurrentSize = objItem.CurrentSize | |
| nMaximumSize = objItem.MaximumSize | |
| Next | |
| End If | |
| If (bWMIServices) Then | |
| ReportProgress " Gathering information about services" | |
| Set colItems = objWMIService.ExecQuery("Select Caption, Started, StartMode, StartName from Win32_Service Where ServiceType ='Share Process' Or ServiceType ='Own Process'",,48) | |
| Set objDbrServices = CreateObject("ADOR.Recordset") | |
| objDbrServices.Fields.Append "Caption", adVarChar, MaxCharacters | |
| objDbrServices.Fields.Append "Started", adVarChar, MaxCharacters | |
| objDbrServices.Fields.Append "StartMode", adVarChar, MaxCharacters | |
| objDbrServices.Fields.Append "StartName", adVarChar, MaxCharacters | |
| objDbrServices.Open | |
| For Each objItem In colItems | |
| objDbrServices.AddNew | |
| objDbrServices("Caption") = objItem.Caption | |
| objDbrServices("Started") = objItem.Started | |
| objDbrServices("StartMode") = objItem.StartMode | |
| objDbrServices("StartName") = objItem.StartName | |
| If (LCase(objItem.Caption) = "mssqlserver") Then | |
| bRoleSQL = True | |
| End If | |
| objDbrServices.Update | |
| Next | |
| objDbrServices.Sort = "Caption" | |
| End If | |
| If (bWMIFileShares) Then | |
| ReportProgress " Gathering information about shares" | |
| Set colItems = objWMIService.ExecQuery("Select Name, Description, Path, Type from Win32_Share",,48) | |
| Set objDbrShares = CreateObject("ADOR.Recordset") | |
| objDbrShares.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrShares.Fields.Append "Description", adVarChar, MaxCharacters | |
| objDbrShares.Fields.Append "Path", adVarChar, MaxCharacters | |
| objDbrShares.Open | |
| For Each objItem in colItems | |
| objDbrShares.AddNew | |
| objDbrShares("Name") = objItem.Name | |
| objDbrShares("Description") = objItem.Description | |
| objDbrShares("Path") = objItem.Path | |
| objDbrShares.Update | |
| If (objItem.Type = 0) Then | |
| bRoleFile = True | |
| End If | |
| If (objItem.Type = 1) Then | |
| bRolePrint = True | |
| End If | |
| Next | |
| objDbrShares.Sort = "Name" | |
| End If | |
| If (bWMIHardware) Then | |
| ReportProgress " Gathering Sound Device information" | |
| Set colItems = objWMIService.ExecQuery("Select Name, Manufacturer from Win32_SoundDevice",,48) | |
| Set objDbrSoundDevice = CreateObject("ADOR.Recordset") | |
| objDbrSoundDevice.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrSoundDevice.Fields.Append "Manufacturer", adVarChar, MaxCharacters | |
| objDbrSoundDevice.Open | |
| For Each objItem in colItems | |
| objDbrSoundDevice.AddNew | |
| objDbrSoundDevice("Name") = objItem.Name | |
| objDbrSoundDevice("Manufacturer") = objItem.Manufacturer | |
| objDbrSoundDevice.Update | |
| Next | |
| End If | |
| If (bWMIStartupCommands) Then | |
| ReportProgress " Gathering Startup Commands information" | |
| Set colItems = objWMIService.ExecQuery("Select Command, Name, User from Win32_StartupCommand",,48) | |
| Set objDbrStartupCommand = CreateObject("ADOR.Recordset") | |
| objDbrStartupCommand.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrStartupCommand.Fields.Append "Command", adVarChar, MaxCharacters | |
| objDbrStartupCommand.Fields.Append "User", adVarChar, MaxCharacters | |
| objDbrStartupCommand.Open | |
| For Each objItem in colItems | |
| objDbrStartupCommand.AddNew | |
| objDbrStartupCommand("Name") = objItem.Name | |
| objDbrStartupCommand("Command") = objItem.Command | |
| objDbrStartupCommand("User") = objItem.User | |
| objDbrStartupCommand.Update | |
| Next | |
| objDbrStartupCommand.Sort = "User, Name" | |
| End If | |
| ReportProgress " Gathering system enclosure information" | |
| Set colItems = objWMIService.ExecQuery("Select ChassisTypes from Win32_SystemEnclosure",,48) | |
| For Each objItem in colItems | |
| For i = Lbound(objItem.ChassisTypes) to Ubound(objItem.ChassisTypes) | |
| nChassisType = objItem.ChassisTypes(i) | |
| Next | |
| Select Case nChassisType | |
| Case 1 | |
| strChassisType = "Other" | |
| Case 2 | |
| strChassisType = "Unknown" | |
| Case 3 | |
| strChassisType = "Desktop" | |
| Case 4 | |
| strChassisType = "Low-profile desktop" | |
| Case 5 | |
| strChassisType = "Pizza box" | |
| Case 6 | |
| strChassisType = "Mini tower" | |
| Case 7 | |
| strChassisType = "Tower" | |
| Case 8 | |
| strChassisType = "Portable" | |
| Case 9 | |
| strChassisType = "Laptop" | |
| Case 10 | |
| strChassisType = "Notebook" | |
| Case 11 | |
| strChassisType = "Hand-held" | |
| Case 12 | |
| strChassisType = "Docking station" | |
| Case 13 | |
| strChassisType = "All-in-one" | |
| Case 14 | |
| strChassisType = "Subnotebook" | |
| Case 15 | |
| strChassisType = "Space-saving" | |
| Case 16 | |
| strChassisType = "Lunch box" | |
| Case 17 | |
| strChassisType = "Main system chassis" | |
| Case 18 | |
| strChassisType = "Expansion chassis" | |
| Case 19 | |
| strChassisType = "Subchassis" | |
| Case 20 | |
| strChassisType = "Bus-expansion chassis" | |
| Case 21 | |
| strChassisType = "Peripheral chassis" | |
| Case 22 | |
| strChassisType = "Storage chassis" | |
| Case 23 | |
| strChassisType = "Rack Mount chassis" | |
| Case 24 | |
| strChassisType = "Sealed-case computer" | |
| End Select | |
| Next | |
| If (bWMIHardware) Then | |
| ReportProgress " Gathering TapeDrive information" | |
| Set colItems = objWMIService.ExecQuery("Select Name, Description, Manufacturer from Win32_TapeDrive",,48) | |
| Set objDbrTapeDrive = CreateObject("ADOR.Recordset") | |
| objDbrTapeDrive.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrTapeDrive.Fields.Append "Description", adVarChar, MaxCharacters | |
| objDbrTapeDrive.Fields.Append "Manufacturer", adVarChar, MaxCharacters | |
| objDbrTapeDrive.Open | |
| For Each objItem in colItems | |
| objDbrTapeDrive.AddNew | |
| bHasTapeDrive = True | |
| objDbrTapeDrive("Name") = objItem.Name | |
| objDbrTapeDrive("Description") = objItem.Description | |
| objDbrTapeDrive("Manufacturer") = objItem.Manufacturer | |
| objDbrTapeDrive.Update | |
| Next | |
| End If | |
| ReportProgress " Gathering time zone" | |
| Set colItems = objWMIService.ExecQuery("Select Description from Win32_TimeZone",,48) | |
| For Each objItem in colItems | |
| strTimeZone = objItem.Description | |
| Next | |
| If (bWMIPatches) Then | |
| ReportProgress " Gathering information about patches" | |
| Set colItems = objWMIService.ExecQuery("Select Description, HotFixID, InstalledOn from Win32_QuickFixEngineering Where HotfixID <> 'File 1' And HotfixID <> 'Q147222'",,48) | |
| Set objDbrPatches = CreateObject("ADOR.Recordset") | |
| objDbrPatches.Fields.Append "Description", adVarChar, MaxCharacters | |
| objDbrPatches.Fields.Append "HotfixID", adVarChar, MaxCharacters | |
| objDbrPatches.Fields.Append "InstallDate", adVarChar, MaxCharacters | |
| objDbrPatches.Open | |
| For Each objItem in colItems | |
| objDbrPatches.AddNew | |
| objDbrPatches("Description") = objItem.Description | |
| objDbrPatches("HotfixID") = objItem.HotfixID | |
| If (IsNull(objItem.InstalledOn) Or objItem.InstalledOn = "") Then | |
| objDbrPatches("InstallDate") = "N/A" | |
| Else | |
| If (Len(objItem.InstalledOn) = 16) Then | |
| ' Replace UTC time used in Vista (Nano seconds since 1 January 1601 in Hex) | |
| dwUTCPlaceHolder = CDbl("&H" & objItem.InstalledOn) | |
| objDbrPatches("InstallDate") = DateSerial(1601,1,1) + dwUTCPlaceHolder/1e7/86400 | |
| Else | |
| objDbrPatches("InstallDate") = objItem.InstalledOn | |
| End If | |
| End If | |
| objDbrPatches.Update | |
| Next | |
| End If | |
| If (bWMILocalAccounts) Then | |
| ReportProgress " Gathering local users" | |
| Set colItems = objWMIService.ExecQuery("Select Description, Name from Win32_UserAccount Where Domain='" & strComputerSystem_Name & "'",,48) | |
| Set objDbrLocalAccounts = CreateObject("ADOR.Recordset") | |
| objDbrLocalAccounts.Fields.Append "Description", adVarChar, MaxCharacters | |
| objDbrLocalAccounts.Fields.Append "UserName", adVarChar, MaxCharacters | |
| objDbrLocalAccounts.Open | |
| For Each objItem in colItems | |
| objDbrLocalAccounts.AddNew | |
| objDbrLocalAccounts("Description") = objItem.Description | |
| objDbrLocalAccounts("UserName") = objItem.Name | |
| objDbrLocalAccounts.Update | |
| Next | |
| objDbrLocalAccounts.Sort = "UserName" | |
| End If | |
| If (bWMIHardware) Then | |
| ReportProgress " Gathering Video Controller information" | |
| Set colItems = objWMIService.ExecQuery("Select AdapterCompatibility, AdapterRAM, Name from Win32_VideoController",,48) | |
| Set objDbrVideoController = CreateObject("ADOR.Recordset") | |
| objDbrVideoController.Fields.Append "AdapterCompatibility", adVarChar, MaxCharacters | |
| objDbrVideoController.Fields.Append "AdapterRAM", adVarChar, MaxCharacters | |
| objDbrVideoController.Fields.Append "Name", adVarChar, MaxCharacters | |
| objDbrVideoController.Open | |
| For Each objItem in colItems | |
| objDbrVideoController.AddNew | |
| objDbrVideoController("AdapterCompatibility") = objItem.AdapterCompatibility | |
| objDbrVideoController("AdapterRAM") = objItem.AdapterRAM | |
| objDbrVideoController("Name") = objItem.Name | |
| objDbrVideoController.Update | |
| Next | |
| End If | |
| Set objWMIService = Nothing | |
| ReportProgress "End subroutine: GatherWMIInformation()" | |
| GatherWMIInformation = True | |
| End Function ' GatherWMIInformation | |
| Sub GetOptions() | |
| Dim objArgs, nArgs | |
| ' Default settings | |
| bWMIBios = True | |
| bWMIRegistry = True | |
| bWMIApplications = True | |
| bWMIPatches = True | |
| bWMIEventLogFile = True | |
| bWMIFileShares = True | |
| bWMIIP4Routes = True | |
| bWMILocalAccounts = True | |
| bWMILocalGroups = True | |
| bWMIServices = True | |
| bWMIStartupCommands = True | |
| bWMIPrinters = True | |
| bWMIRunningProcesses = True | |
| bWMIHardware = True | |
| bHasTapeDrive = False | |
| bRegDomainSuffix = True | |
| bRegPrintSpoolLocation = True | |
| bRegPrograms = True | |
| bRegProductKeys = True | |
| bRegWindowsComponents = True | |
| bRegLastUser = True | |
| bDoRegistryCheck = True | |
| strComputer = "" | |
| bAlternateCredentials = False | |
| bInvalidArgument = False | |
| bDisplayHelp = False | |
| bShowWord = True | |
| bWordExtras = True | |
| nBaseFontSize = 12 | |
| bUseSpecificTable = False | |
| bUseDOTFile = False | |
| bSaveFile = False | |
| bCheckVersion = False | |
| strExportFormat = "word" | |
| strStylesheet = "" | |
| bAllowErrors = True | |
| Set objArgs = WScript.Arguments | |
| If (objArgs.Count > 0) Then | |
| For nArgs = 0 To objArgs.Count - 1 | |
| SetOptions objArgs(nArgs) | |
| Next | |
| Else | |
| WScript.Echo "For help type: cscript.exe sydi-server.vbs -h" | |
| End If | |
| If strExportFormat = "awdit" Then | |
| bWMIPatches = False | |
| bWMIServices = False | |
| bWMIPrinters = False | |
| bWMIEventLogFile = False | |
| bWMIStartupCommands = False | |
| End If | |
| SystemRolesDefine | |
| If (bSaveFile = False And strExportFormat = "xml") Then | |
| bInvalidArgument = True | |
| End If | |
| End Sub ' GetOptions | |
| Sub GetProductKey(arrRegBinary, strCurrentProduct) | |
| ' After doing some research I found out that someone had already written a function to decode the base 24 encoded value from | |
| ' the registry. | |
| ' Credits for this function should go to Parabellum at http://www.visualbasicscript.com/m_42793/mpage_1/key_/tm.htm | |
| Dim arrValidKeyChars, iRegByte, arrDigitalProductID | |
| Dim strEncodedKey, strProductKey | |
| ReDim arrDigitalProductID(0) | |
| arrValidKeyChars = 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") | |
| Dim k, x, y, strProduct | |
| strEncodedKey = "" | |
| For iRegByte = 52 to 66 | |
| If (arrDigitalProductID(0) <> "") Then | |
| ReDim Preserve arrDigitalProductID(UBound(arrDigitalProductID) + 1) | |
| End If | |
| arrDigitalProductID(UBound(arrDigitalProductID)) = arrRegBinary(iRegByte) | |
| strEncodedKey = strEncodedKey + Cstr(arrRegBinary(iRegByte)) | |
| Next | |
| If (strEncodedKey = "000000000000000") Then | |
| objDbrRegProductKeys.AddNew | |
| objDbrRegProductKeys("ProductName") = strCurrentProduct | |
| objDbrRegProductKeys("ProductKey") = "N/A" | |
| objDbrRegProductKeys.Update | |
| Else | |
| For x = 24 To 0 Step -1 | |
| k = 0 | |
| For y = 14 To 0 Step -1 | |
| k = k * 256 Xor arrDigitalProductID(y) | |
| arrDigitalProductID(y) = Int(k / 24) | |
| k = k Mod 24 | |
| Next | |
| strProductKey = arrValidKeyChars(k) & strProductKey | |
| If x Mod 5 = 0 And x <> 0 Then | |
| strProductKey = "-" & strProductKey | |
| End If | |
| Next | |
| objDbrRegProductKeys.AddNew | |
| objDbrRegProductKeys("ProductName") = strCurrentProduct | |
| objDbrRegProductKeys("ProductKey") = strProductKey | |
| objDbrRegProductKeys.Update | |
| End If | |
| End Sub ' GetProductKey | |
| Sub GetWMIProviderList | |
| If (bAllowErrors) Then | |
| On Error Resume Next | |
| End If | |
| Dim colNameSpaces | |
| ReportProgress vbCrlf & "Checking for Other WMI Providers" | |
| Dim objSWbemLocator | |
| If (bAlternateCredentials) Then | |
| Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") | |
| Set objWMIService = objSWbemLocator.ConnectServer(strComputer,"root",strUserName,strPassword) | |
| Else | |
| Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root") | |
| End If | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strComputer & ")" | |
| Err.Clear | |
| Exit Sub | |
| End If | |
| Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE") | |
| For Each objItem In colNameSpaces | |
| Select Case objItem.Name | |
| Case "MicrosoftIISv2" | |
| bHasMicrosoftIISv2 = True | |
| ReportProgress " Found MicrosoftIISv2 (Internet Information Services)" | |
| End Select | |
| Next | |
| End Sub ' GetWMIProviderList | |
| Sub PopulateWordfile() | |
| If (bAllowErrors) Then | |
| On Error Resume Next | |
| End If | |
| ' WdListNumberStyle | |
| Const wdListNumberStyleArabic = 0 | |
| Const wdListNumberStyleUppercaseRoman = 1 | |
| Const wdListNumberStyleLowercaseRoman = 2 | |
| Const wdListNumberStyleUppercaseLetter = 3 | |
| Const wdListNumberStyleLowercaseLetter = 4 | |
| Const wdListNumberStyleOrdinal = 5 | |
| Const wdListNumberStyleCardinalText = 6 | |
| Const wdListNumberStyleOrdinalText = 7 | |
| Const wdListNumberStyleArabicLZ = 22 | |
| Const wdListNumberStyleBullet = 23 | |
| Const wdListNumberStyleLegal = 253 | |
| Const wdListNumberStyleLegalLZ = 254 | |
| Const wdListNumberStyleNone = 255 | |
| ' WdListGalleryType | |
| Const wdBulletGallery = 1 | |
| Const wdNumberGallery = 2 | |
| Const wdOutlineNumberGallery = 3 | |
| ' WdBreakType | |
| Const wdPageBreak = 7 | |
| ' WdBuiltInProperty | |
| Const wdPropertyAuthor = 3 | |
| Const wdPropertyComments = 5 | |
| ' WdBuiltInStyle | |
| Const wdStyleBodyText = -67 | |
| Const wdStyleFooter = -33 | |
| Const wdStyleHeader = -32 | |
| Const wdStyleHeading1 = -2 | |
| Const wdStyleHeading2 = -3 | |
| Const wdStyleHeading3 = -4 | |
| Const wdStyleHeading4 = -5 | |
| Const wdStyleTitle = -63 | |
| Const wdStyleTOC1 = -20 | |
| Const wdStyleTOC2 = -21 | |
| Const wdStyleTOC3 = -22 | |
| ' WdFieldType | |
| 'Const wdFieldEmpty = -1 | |
| Const wdFieldNumPages = 26 | |
| Const wdFieldPage = 33 | |
| ' WdParagraphAlignment | |
| Const wdAlignParagraphRight = 2 | |
| ' WdSeekView | |
| Const wdSeekMainDocument = 0 | |
| Const wdSeekCurrentPageHeader = 9 | |
| Const wdSeekCurrentPageFooter = 10 | |
| ' Page Viewing | |
| Const wdPaneNone = 0 | |
| Const wdPrintView = 3 | |
| ReportProgress VbCrLf & "Start subroutine: PopulateWordfile()" | |
| Set oWord = CreateObject("Word.Application") | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strComputer & ")" | |
| ReportProgress " Could not open Microsoft Word, verify that it is correctly installed on the computer you are scanning from." | |
| Err.Clear | |
| Exit Sub | |
| End If | |
| 'oWord.Activate | |
| If (bUseDOTFile) Then | |
| oWord.Documents.Add strDOTFile | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strDOTFile & ")" | |
| ReportProgress " Unable to open the template file " & strDOTFile | |
| ReportProgress " Did you use the correct path?" | |
| Err.Clear | |
| Exit Sub | |
| End If | |
| Else | |
| oWord.Documents.Add | |
| End If | |
| oWord.Application.Visible = bShowWord | |
| ReportProgress " Opening Empty document" | |
| Set oListTemplate = oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1) | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(1).Numberformat = "%1." | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(1).NumberStyle = wdListNumberStyleArabic | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(2).Numberformat = "%1.%2." | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(2).NumberStyle = wdListNumberStyleArabic | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(3).Numberformat = "%1.%2.%3." | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(3).NumberStyle = wdListNumberStyleArabic | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(4).Numberformat = "%1.%2.%3.%4." | |
| oWord.ListGalleries(wdOutlineNumberGallery).ListTemplates(1).listlevels(4).NumberStyle = wdListNumberStyleArabic | |
| If Not (bUseDOTFile) Then | |
| oWord.ActiveDocument.Styles(wdStyleTOC1).Font.Bold = True | |
| oWord.ActiveDocument.Styles(wdStyleBodyText).Font.Name = strFontBodyText | |
| oWord.ActiveDocument.Styles(wdStyleBodyText).Font.Size = nBaseFontSize | |
| oWord.ActiveDocument.Styles(wdStyleHeading1).Font.Name = strFontHeading1 | |
| oWord.ActiveDocument.Styles(wdStyleHeading1).Font.Size = (nBaseFontSize + 4) | |
| oWord.ActiveDocument.Styles(wdStyleHeading2).Font.Name = strFontHeading2 | |
| oWord.ActiveDocument.Styles(wdStyleHeading2).Font.Size = (nBaseFontSize + 2) | |
| oWord.ActiveDocument.Styles(wdStyleHeading3).Font.Name = strFontHeading3 | |
| oWord.ActiveDocument.Styles(wdStyleHeading3).Font.Size = (nBaseFontSize + 1) | |
| oWord.ActiveDocument.Styles(wdStyleHeading4).Font.Name = strFontHeading4 | |
| oWord.ActiveDocument.Styles(wdStyleHeading4).Font.Size = nBaseFontSize | |
| oWord.ActiveDocument.Styles(wdStyleTitle).Font.Name = strFontTitle | |
| oWord.ActiveDocument.Styles(wdStyleTitle).Font.Size = (nBaseFontSize + 4) | |
| oWord.ActiveDocument.Styles(wdStyleTOC1).Font.Name = strFontTOC1 | |
| oWord.ActiveDocument.Styles(wdStyleTOC1).Font.Size = nBaseFontSize | |
| oWord.ActiveDocument.Styles(wdStyleTOC2).Font.Name = strFontTOC2 | |
| oWord.ActiveDocument.Styles(wdStyleTOC2).Font.Size = nBaseFontSize | |
| oWord.ActiveDocument.Styles(wdStyleTOC3).Font.Name = strFontTOC3 | |
| oWord.ActiveDocument.Styles(wdStyleTOC3).Font.Size = nBaseFontSize | |
| oWord.ActiveDocument.Styles(wdStyleHeader).Font.Name = strFontHeader | |
| oWord.ActiveDocument.Styles(wdStyleHeader).Font.Size = (nBaseFontSize - 1) | |
| oWord.ActiveDocument.Styles(wdStyleFooter).Font.Name = strFontFooter | |
| oWord.ActiveDocument.Styles(wdStyleFooter).Font.Size = (nBaseFontSize - 1) | |
| ReportProgress " Setting styles" | |
| End If | |
| oWord.Selection.Style = wdStyleTitle | |
| oWord.Selection.TypeText "Basic documentation For " & strComputerSystem_Name & VbCrLf & VbCrLf | |
| If (strDocumentAuthor = "") Then | |
| strDocumentAuthor = oWord.ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor).Value | |
| End If | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Document versions:" & vbCrLf & "Version 1.0" & vbTab & Date & vbTab & strDocumentAuthor & vbTab & "First Draft" & vbCrLf & vbCrLf | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "SUMMARY" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.Style = wdStyleBodyText | |
| If (bWordExtras) Then | |
| oWord.Selection.TypeText "[Introduce the system in a short sentence]. " | |
| End If | |
| oWord.Selection.TypeText "The system is running " & strOperatingSystem_Caption & " " & strOperatingSystem_ServicePack & VbCrLf | |
| If (bWordExtras) Then | |
| oWord.Selection.TypeText "System Owner: " | |
| oWord.Selection.TypeText "[provide name and title]" & VbCrLf | |
| End If | |
| If (bRegDomainSuffix) Then | |
| oWord.Selection.TypeText "FQDN: " & LCase(strComputerSystem_Name) & "." & strPrimaryDomain & VbCrLf | |
| End If | |
| oWord.Selection.TypeText "NetBIOS: " & strComputerSystem_Name & VbCrLf | |
| oWord.Selection.TypeText "Roles: " | |
| i = 0 | |
| If Not (objDbrSystemRoles.Bof) Then | |
| objDbrSystemRoles.MoveFirst | |
| End If | |
| Do Until objDbrSystemRoles.EOF | |
| If (i = 0) Then | |
| oWord.Selection.TypeText Cstr(objDbrSystemRoles.Fields.Item("Role")) | |
| Else | |
| oWord.Selection.TypeText ", " & Cstr(objDbrSystemRoles.Fields.Item("Role")) | |
| End If | |
| i = i + 1 | |
| objDbrSystemRoles.MoveNext | |
| Loop | |
| If (i = 0) Then | |
| oWord.Selection.TypeText "[provide the roles of this system]" & vbCrLf | |
| Else | |
| oWord.Selection.TypeText vbCrLf | |
| End If | |
| If (bWordExtras) Then | |
| oWord.Selection.TypeText "Physical location: " | |
| oWord.Selection.TypeText "[provide info: Floor 3, Street 3, Stockholm]" & vbCrLf | |
| oWord.Selection.TypeText "Logical location: " | |
| oWord.Selection.TypeText "[provide info: Server VLAN 2]" & VbCrLf | |
| End If | |
| oWord.Selection.TypeText "Identifying Number: " & strComputerSystemProduct_IdentifyingNumber & VbCrLf | |
| If (bWordExtras) Then | |
| oWord.Selection.TypeText "Shipping date: " | |
| oWord.Selection.TypeText "[provide shipping date]" & VbCrLf | |
| oWord.Selection.TypeText "Support contract: " | |
| oWord.Selection.TypeText "[provide hardware service level purchased for this server]" & VbCrLf | |
| oWord.Selection.TypeText "Maintenance and changes to this documentation are recorded in " | |
| oWord.Selection.TypeText "[reference to log file/system]." & VbCrLf | |
| oWord.Selection.TypeText "Continuity and disaster recovery are covered in " | |
| oWord.Selection.TypeText "[reference to continuity plan]" & VbCrLf | |
| End If | |
| ReportProgress " Writing summary" | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText vbCrLf & "TABLE OF CONTENTS" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.ActiveDocument.TablesOfContents.Add oWord.Selection.Range, False, 2, 3, , , , ,oWord.ActiveDocument.Styles(wdStyleHeading1)& ";1", True | |
| ReportProgress " Inserting Table Of Contents" | |
| oWord.Selection.TypeText vbCrLf | |
| oWord.Selection.InsertBreak wdPageBreak | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 1 - System Information | |
| '-------------------------------------------------------------------------------- | |
| If (bWordExtras) Then | |
| ReportProgress " Writing System Information" | |
| WriteHeader 1,"System Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "[Enter information about your server, what the system means to your organization, the purpose of this document etc.]" & vbCrLf | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 2 - Hardware Platform | |
| '-------------------------------------------------------------------------------- | |
| ReportProgress " Writing Hardware Platform" | |
| WriteHeader 1,"Hardware Platform" | |
| WriteHeader 2,"General Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Manufacturer: " & strComputerSystemProduct_Manufacturer & vbCrLf | |
| oWord.Selection.TypeText "Product name: " & strComputerSystemProduct_Name & vbCrLf | |
| oWord.Selection.TypeText "Identifying Number: " & strComputerSystemProduct_IdentifyingNumber & vbCrLf | |
| oWord.Selection.TypeText "Chassis: " & strChassisType & vbCrLf | |
| oWord.Selection.TypeText VbCrLf | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Processor" & VbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.TypeText "Name: " & strProcessor_Name & VbCrLf | |
| oWord.Selection.TypeText "Description: " & strProcessor_Description & VbCrLf | |
| oWord.Selection.TypeText "Speed: " & strProcessor_MaxClockSpeed & " MHz" & vbCrLf | |
| oWord.Selection.TypeText "L2 Cache Size: " & strProcessor_L2CacheSize & " KB" & VbCrLf | |
| oWord.Selection.TypeText "External clock: " & strProcessor_ExtClock & " MHz" & VbCrLf | |
| If (intProcessors > 0) Then | |
| oWord.Selection.TypeText "The system has " & intProcessors & " processors." & VbCrLf | |
| End If | |
| If (bProcessorHTSystem) Then | |
| oWord.Selection.TypeText "The system has Hyper-Threading enabled." & VbCrLf | |
| End If | |
| oWord.Selection.TypeText VbCrLf | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Memory" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.TypeText "Total Memory: " & strTotalPhysicalMemoryMB & "MB" & VbCrLf | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrPhysicalMemory.Recordcount + 1, 4 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Bank" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Capacity" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Form" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Type" : oWord.Selection.MoveRight | |
| If Not (objDbrPhysicalMemory.Bof) Then | |
| objDbrPhysicalMemory.MoveFirst | |
| End If | |
| Do Until objDbrPhysicalMemory.EOF | |
| oWord.Selection.TypeText Cstr(objDbrPhysicalMemory.Fields.Item("BankLabel")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText ReturnBytes2Megabytes(objDbrPhysicalMemory.Fields.Item("Capacity")) & " MB" : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText ReturnPhysicalMemoryFormFactor(objDbrPhysicalMemory.Fields.Item("FormFactor")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText ReturnPhysicalMemoryMemoryType(objDbrPhysicalMemory.Fields.Item("MemoryType")) : oWord.Selection.MoveRight | |
| objDbrPhysicalMemory.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| 'CD-ROM Information | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "CD-ROM" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrCDROMDrive.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Drive" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Manufacturer" : oWord.Selection.MoveRight | |
| If Not (objDbrCDROMDrive.Bof) Then | |
| objDbrCDROMDrive.MoveFirst | |
| End If | |
| Do Until objDbrCDROMDrive.EOF | |
| oWord.Selection.TypeText Cstr(objDbrCDROMDrive.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrCDROMDrive.Fields.Item("Drive")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrCDROMDrive.Fields.Item("Manufacturer")) : oWord.Selection.MoveRight | |
| objDbrCDROMDrive.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| If (bHasTapeDrive) Then | |
| ' Tape Drive | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Tape Drive" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrTapeDrive.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Description" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Manufacturer" : oWord.Selection.MoveRight | |
| If Not (objDbrTapeDrive.Bof) Then | |
| objDbrTapeDrive.MoveFirst | |
| End If | |
| Do Until objDbrTapeDrive.EOF | |
| oWord.Selection.TypeText Cstr(objDbrTapeDrive.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrTapeDrive.Fields.Item("Description")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrTapeDrive.Fields.Item("Manufacturer")) : oWord.Selection.MoveRight | |
| objDbrTapeDrive.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIHardware) Then | |
| 'Sound Card Information | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Sound Card" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrSoundDevice.Recordcount + 1, 2 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Manufacturer" : oWord.Selection.MoveRight | |
| If Not (objDbrSoundDevice.Bof) Then | |
| objDbrSoundDevice.MoveFirst | |
| End If | |
| Do Until objDbrSoundDevice.EOF | |
| oWord.Selection.TypeText Cstr(objDbrSoundDevice.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrSoundDevice.Fields.Item("Manufacturer")) : oWord.Selection.MoveRight | |
| objDbrSoundDevice.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIHardware) Then | |
| 'oWord.Selection.TypeText VbCrLf | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Video Controller" & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrVideoController.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Adapter RAM" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Compatibility" : oWord.Selection.MoveRight | |
| If Not (objDbrVideoController.Bof) Then | |
| objDbrVideoController.MoveFirst | |
| End If | |
| Do Until objDbrVideoController.EOF | |
| oWord.Selection.TypeText Cstr(objDbrVideoController.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText ReturnBytes2Megabytes(objDbrVideoController.Fields.Item("AdapterRAM")) & " MB" : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrVideoController.Fields.Item("AdapterCompatibility")) : oWord.Selection.MoveRight | |
| objDbrVideoController.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIBios) Then | |
| WriteHeader 2,"BIOS Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "BIOS Version: " & strBIOS_Version & vbCrLf | |
| oWord.Selection.TypeText "SMBIOS Version: " & strBIOS_SMBIOSBIOSVersion & " (Major: " & strBIOS_SMBIOSMajorVersion & ", Minor: " & strBIOS_SMBIOSMinorVersion & ")" & vbCrLf | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Bios Characteristics: " | |
| oWord.Selection.Font.Bold = False | |
| For i = 0 To Ubound(arrBIOS_BiosCharacteristics) | |
| If (strBiosCharacteristics = "") Then | |
| strBiosCharacteristics = ReturnBiosCharacteristic(arrBIOS_BiosCharacteristics(i)) | |
| Else | |
| strBiosCharacteristics = strBiosCharacteristics & ", " & ReturnBiosCharacteristic(arrBIOS_BiosCharacteristics(i)) | |
| End If | |
| Next | |
| oWord.Selection.TypeText strBiosCharacteristics & vbCrLf | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 3 - Software Platform | |
| '-------------------------------------------------------------------------------- | |
| ReportProgress " Writing Software Platform" | |
| WriteHeader 1,"Software Platform" | |
| WriteHeader 2,"General Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "OS Name: " & strOperatingSystem_Caption & VbCrLf | |
| oWord.Selection.TypeText "OS Configuration: " & strComputerRole & " in the " & strComputerSystem_Domain & " " & strDomainType & vbCrLf | |
| oWord.Selection.TypeText "Windows is installed at " & strOperatingSystem_WindowsDirectory & VbCrLf | |
| oWord.Selection.TypeText "Install date: " & ConvertWMIDate(strOperatingSystem_InstallDate) & VbCrLf | |
| oWord.Selection.TypeText "Operating System Language: " & ReturnOperatingSystemLanguage(strOperatingSystem_LanguageCode) & VbCrLf | |
| If (bRegLastUser) Then | |
| oWord.Selection.TypeText "Last Logged on User: " & strLastUser & vbCrLf | |
| End If | |
| If (bRegWindowsComponents) Then | |
| WriteHeader 2,"Windows Components" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrWindowsComponents.Bof) Then | |
| objDbrWindowsComponents.Movefirst | |
| End If | |
| Do Until objDbrWindowsComponents.EoF | |
| If (objDbrWindowsComponents.Fields.Item("ClassName") <> "Hidden") Then | |
| If (objDbrWindowsComponents.Fields.Item("Level") = "1") Then | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & VbCrLf | |
| oWord.Selection.Font.Bold = False | |
| Elseif (objDbrWindowsComponents.Fields.Item("Level") = "3") Then | |
| oWord.Selection.TypeText vbTab & vbTab & CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & VbCrLf | |
| Else | |
| If (strWindowsComponentsClass <> objDbrWindowsComponents.Fields.Item("Class")) Then | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText CStr(objDbrWindowsComponents.Fields.Item("ClassName")) & VbCrLf | |
| oWord.Selection.Font.Bold = False | |
| End If | |
| strWindowsComponentsClass = objDbrWindowsComponents.Fields.Item("Class") | |
| oWord.Selection.TypeText vbTab & CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & VbCrLf | |
| End If | |
| End If | |
| objDbrWindowsComponents.MoveNext | |
| Loop | |
| End If | |
| If (bWMIPatches) Then | |
| WriteHeader 2,"Installed Patches" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrPatches.Bof) Then | |
| objDbrPatches.Movefirst | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrPatches.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Patch ID" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Description" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Install Date" : oWord.Selection.MoveRight | |
| Else | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| Do Until objDbrPatches.Eof | |
| oWord.Selection.TypeText CStr(objDbrPatches.Fields.Item("HotfixID")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrPatches.Fields.Item("Description")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrPatches.Fields.Item("InstallDate")) : oWord.Selection.MoveRight | |
| objDbrPatches.MoveNext | |
| oWord.Selection.TypeText VbCrLf | |
| Loop | |
| End If | |
| If (bRegProductKeys) Then | |
| WriteHeader 2,"Product Keys" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrRegProductKeys.Bof) Then | |
| objDbrRegProductKeys.Movefirst | |
| objDbrRegProductKeys.Sort = "ProductName" | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrRegProductKeys.Recordcount + 1, 2 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Product" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Key" : oWord.Selection.MoveRight | |
| 'If Not (bUseSpecificTable) Then | |
| ' oWord.Selection.Font.Bold = True | |
| 'End If | |
| 'oWord.Selection.TypeText "Install Date" : oWord.Selection.MoveRight | |
| Else | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| Do Until objDbrRegProductKeys.Eof | |
| oWord.Selection.TypeText CStr(objDbrRegProductKeys("ProductName")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrRegProductKeys("ProductKey")) : oWord.Selection.MoveRight | |
| 'oWord.Selection.TypeText CStr(objDbrPatches.Fields.Item("InstallDate")) : oWord.Selection.MoveRight | |
| objDbrRegProductKeys.MoveNext | |
| oWord.Selection.TypeText VbCrLf | |
| Loop | |
| End If | |
| If (bWordExtras) Then | |
| WriteHeader 2,"Backup" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "[Enter information about the systems backup routines.]" & vbCrLf | |
| WriteHeader 2,"Antivirus" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "[Enter information about the systems antivirus protection.]" & vbCrLf | |
| End If | |
| If (bWMIApplications) Then | |
| If (errWin32_Product) Then | |
| WriteHeader 2,"Currently Installed Programs (Windows Installer)" | |
| ReportProgress " Writing Installed Programs (Windows Installer)" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrProducts.Recordcount + 1, 4 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Vendor" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Version" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Install Date" : oWord.Selection.MoveRight | |
| If Not (objDbrProducts.Bof) Then | |
| objDbrProducts.MoveFirst | |
| End If | |
| Do Until objDbrProducts.EOF | |
| oWord.Selection.TypeText CStr(objDbrProducts.Fields.Item("ProductName")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrProducts.Fields.Item("Vendor")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrProducts.Fields.Item("Version")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrProducts.Fields.Item("InstallDate")) : oWord.Selection.MoveRight | |
| objDbrProducts.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| End If | |
| If (bRegPrograms) Then | |
| WriteHeader 2,"Currently Installed Programs (From Registry)" | |
| ReportProgress " Writing Installed Programs (Registry)" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrRegPrograms.Recordcount + 1, 2 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Version" : oWord.Selection.MoveRight | |
| If Not (objDbrRegPrograms.Bof) Then | |
| objDbrRegPrograms.MoveFirst | |
| End If | |
| Do Until objDbrRegPrograms.EOF | |
| oWord.Selection.TypeText CStr(objDbrRegPrograms.Fields.Item("DisplayName")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrRegPrograms.Fields.Item("DisplayVersion")) : oWord.Selection.MoveRight | |
| objDbrRegPrograms.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 4 - Storage | |
| '-------------------------------------------------------------------------------- | |
| ReportProgress " Writing storage information" | |
| WriteHeader 1,"Storage" | |
| WriteHeader 2,"General Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrDrives.Bof) Then | |
| objDbrDrives.Movefirst | |
| End If | |
| Do Until objDbrDrives.Eof | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText objDbrDrives.Fields.Item("Caption") & " - " & objDbrDrives.Fields.Item("DeviceID") & VbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.TypeText "Interface: " & objDbrDrives.Fields.Item("InterfaceType") & vbcrlf | |
| oWord.Selection.TypeText "Total Disk Size: " & Round(ReturnBytes2Gigabytes(objDbrDrives.Fields.Item("Size")), 2) & " Gb" & VbCrLf | |
| If Not (objDbrDisks.Bof) Then | |
| objDbrDisks.MoveFirst | |
| End If | |
| objDbrDisks.Filter = " ParentDriveID='" & objDbrDrives.Fields.Item("DeviceID") & "'" | |
| Do Until objDbrDisks.Eof | |
| oWord.Selection.TypeText objDbrDisks.Fields.Item("Caption") & " " | |
| oWord.Selection.TypeText round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("Size")),2) & " Gb " | |
| oWord.Selection.TypeText "(" & round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("FreeSpace")),2) & " Gb Free) " | |
| oWord.Selection.TypeText objDbrDisks.Fields.Item("FileSystem") & vbcrlf | |
| objDbrDisks.MoveNext | |
| Loop | |
| objDbrDrives.MoveNext | |
| Loop | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 5 - Network | |
| '-------------------------------------------------------------------------------- | |
| ReportProgress " Writing Network configuration" | |
| WriteHeader 1,"Network Configuration" | |
| WriteHeader 2,"IP Configuration" | |
| For i = 0 To UBound(arrNetadapter_Description) | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText "Network Adapter " & (i + 1) & vbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.TypeText "Description: " & arrNetadapter_Description(i) & vbCrLf | |
| oWord.Selection.TypeText "MAC: " & arrNetadapter_MACAddress(i) & vbCrLf | |
| For j = 0 To UBound(arrNetadapter_IPAddress,2) | |
| If (arrNetadapter_IPAddress(i,j) <> "") Then | |
| oWord.Selection.TypeText "IP Address: " & arrNetadapter_IPAddress(i,j) & "/" & arrNetadapter_IPSubnet(i,j) & vbCrLf | |
| End If | |
| Next | |
| For j = 0 To UBound(arrNetadapter_DefaultIPGateway,2) | |
| oWord.Selection.TypeText "Gateway: " & arrNetadapter_DefaultIPGateway(i,j) & vbCrlf | |
| Next | |
| strDNSServers = "" | |
| For j = 0 To Ubound(arrNetadapter_DNSServerSearchOrder,2) | |
| If (strDNSServers = "") Then | |
| strDNSServers = arrNetadapter_DNSServerSearchOrder(i,j) | |
| Else | |
| If (arrNetadapter_DNSServerSearchOrder(i,j) <> "") Then | |
| strDNSServers = strDNSServers & ", " & arrNetadapter_DNSServerSearchOrder(i,j) | |
| End If | |
| End If | |
| Next | |
| oWord.Selection.TypeText "DNS Servers: " & strDNSServers & vbCrLf | |
| oWord.Selection.TypeText "DNS Domain: " & arrNetadapter_DNS(i) & vbCrlf | |
| If (arrNetadapter_WINSPrimaryServer(i) <> "" And arrNetadapter_WINSPrimaryServer(i) <> "127.0.0.0") Then | |
| oWord.Selection.TypeText "Primary WINS Server: " & arrNetadapter_WINSPrimaryServer(i) & vbCrLf | |
| End If | |
| If (arrNetadapter_WINSSecondaryServer(i) <> "" And arrNetadapter_WINSSecondaryServer(i) <> "127.0.0.0") Then | |
| oWord.Selection.TypeText "Secondary WINS Server: " & arrNetadapter_WINSSecondaryServer(i) & vbCrLf | |
| End If | |
| If (arrNetadapter_DHCPEnabled(i)) Then | |
| oWord.Selection.TypeText "DHCP Server: " & arrNetadapter_DHCPServer(i) & vbCrlf | |
| End If | |
| Next | |
| If (bWMIIP4Routes) Then | |
| WriteHeader 2,"IP Routes" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrIP4RouteTable.Bof) Then | |
| objDbrIP4RouteTable.Movefirst | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrIP4RouteTable.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Destination" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Subnet Mask" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Gateway" : oWord.Selection.MoveRight | |
| Do Until objDbrIP4RouteTable.EOF | |
| oWord.Selection.TypeText CStr(objDbrIP4RouteTable.Fields.Item("Destination")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrIP4RouteTable.Fields.Item("Mask")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrIP4RouteTable.Fields.Item("NextHop")) : oWord.Selection.MoveRight | |
| objDbrIP4RouteTable.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 6 - General Settings | |
| '-------------------------------------------------------------------------------- | |
| If (bHasMicrosoftIISv2) Then | |
| ReportProgress " Writing IIS Information" | |
| WriteHeader 1,"Internet Information Server" | |
| ReportProgress " Writing Web Configuration" | |
| WriteHeader 2,"WWW Server" | |
| If Not (objDbrIISWebServerSetting.Bof) Then | |
| objDbrIISWebServerSetting.Movefirst | |
| End If | |
| Do Until objDbrIISWebServerSetting.Eof | |
| WriteHeader 3,CStr(objDbrIISWebServerSetting.Fields.Item("ServerComment")) | |
| oWord.Selection.Style = wdStyleBodyText | |
| 'objDbrIISVirtualDirSetting | |
| If Not (objDbrIISVirtualDirSetting.Bof) Then | |
| objDbrIISVirtualDirSetting.Movefirst | |
| End If | |
| objDbrIISVirtualDirSetting.Filter = " Name='" & objDbrIISWebServerSetting("Name") & "/root'" | |
| Do Until objDbrIISVirtualDirSetting.Eof | |
| oWord.Selection.TypeText "Home Directory: " & objDbrIISVirtualDirSetting("Path") & VbCrLf | |
| objDbrIISVirtualDirSetting.MoveNext | |
| Loop | |
| objDbrIISWebServerBindings.Filter = " ServerName='" & objDbrIISWebServerSetting("Name") & "'" | |
| If (objDbrIISWebServerBindings.Recordcount > 0) Then | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrIISWebServerBindings.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Hostname" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Ip" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Port" : oWord.Selection.MoveRight | |
| If Not (objDbrIISWebServerBindings.Bof) Then | |
| objDbrIISWebServerBindings.MoveFirst | |
| End If | |
| Do Until objDbrIISWebServerBindings.EOF | |
| oWord.Selection.TypeText CStr(objDbrIISWebServerBindings("Hostname")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText Cstr(objDbrIISWebServerBindings("Ip")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrIISWebServerBindings("Port")) : oWord.Selection.MoveRight | |
| objDbrIISWebServerBindings.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| objDbrIISWebServerSetting.Movenext | |
| Loop | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 7 - General Settings | |
| '-------------------------------------------------------------------------------- | |
| ReportProgress " Writing Miscellaneous configuration" | |
| WriteHeader 1,"Miscellaneous Configuration" | |
| If (bWMIEventLogFile) Then | |
| ReportProgress " Writing Event Log configuration" | |
| WriteHeader 2,"Event Log files" | |
| oWord.Selection.Style = wdStyleBodyText | |
| If Not (objDbrEventLogFile.Bof) Then | |
| objDbrEventLogFile.Movefirst | |
| End If | |
| Do Until objDbrEventLogFile.Eof | |
| oWord.Selection.Font.Bold = True | |
| oWord.Selection.TypeText CStr(objDbrEventLogFile.Fields.Item("LogFileName")) & VbCrLf | |
| oWord.Selection.Font.Bold = False | |
| oWord.Selection.TypeText "File: " & objDbrEventLogFile.Fields.Item("Name") & VbCrLf | |
| oWord.Selection.TypeText "Maximum size: " & ReturnBytes2Megabytes(objDbrEventLogFile.Fields.Item("MaxFileSize")) & " MB" & VbCrLf | |
| oWord.Selection.TypeText "Overwrite Policy: " & objDbrEventLogFile.Fields.Item("OverwritePolicy") & VbCrLf | |
| objDbrEventLogFile.Movenext | |
| Loop | |
| End If | |
| If (bWMILocalGroups) Then | |
| ReportProgress " Writing Local Groups" | |
| WriteHeader 2,"Local Groups" | |
| If Not (objDbrLocalGroups.Bof) Then | |
| objDbrLocalGroups.Movefirst | |
| End If | |
| oWord.Selection.Style = wdStyleBodyText | |
| Do Until objDbrLocalGroups.Eof | |
| oWord.Selection.TypeText Cstr(objDbrLocalGroups.Fields.Item("Name")) & VbCrLf | |
| objDbrGroupUser.Filter = " Groupname='" & objDbrLocalGroups.Fields.Item("Name") & "'" | |
| Do Until objDbrGroupUser.Eof | |
| oWord.Selection.TypeText Vbtab & objDbrGroupUser.Fields.Item("Member") & VbCrLf | |
| objDbrGroupUser.MoveNext | |
| Loop | |
| objDbrLocalGroups.Movenext | |
| Loop | |
| End If | |
| If (bWMILocalAccounts) Then | |
| ReportProgress " Writing Local User Accounts" | |
| WriteHeader 2,"Local User Accounts" | |
| If Not (objDbrLocalAccounts.Bof) Then | |
| objDbrLocalAccounts.Movefirst | |
| End If | |
| oWord.Selection.Style = wdStyleBodyText | |
| Do Until objDbrLocalAccounts.Eof | |
| oWord.Selection.TypeText Cstr(objDbrLocalAccounts.Fields.Item("UserName")) & VbCrLf | |
| objDbrLocalAccounts.Movenext | |
| Loop | |
| End If | |
| If (bWMIPrinters = True Or bRegPrintSpoolLocation = True) Then | |
| ReportProgress " Writing Printer information" | |
| WriteHeader 2, "Printers" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Print Spooler Location: " & strPrintSpoolLocation & VbCrLf | |
| If (bWMIPrinters) Then | |
| If (objDbrPrinters.Recordcount > 0) Then | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrPrinters.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Driver" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Port" : oWord.Selection.MoveRight | |
| If Not (objDbrPrinters.Bof) Then | |
| objDbrPrinters.MoveFirst | |
| End If | |
| Do Until objDbrPrinters.EOF | |
| oWord.Selection.TypeText CStr(objDbrPrinters.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrPrinters.Fields.Item("DriverName")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrPrinters.Fields.Item("PortName")) : oWord.Selection.MoveRight | |
| objDbrPrinters.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| End If | |
| End If | |
| WriteHeader 2,"Regional settings" | |
| ReportProgress " Writing Regional settings" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Time Zone: " & strTimeZone & VbCrLf | |
| If (bWMIRunningProcesses) Then | |
| ReportProgress " Writing Processes information" | |
| WriteHeader 2, "Running Processes" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrProcess.Recordcount + 1, 2 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Executable" : oWord.Selection.MoveRight | |
| If Not (objDbrProcess.Bof) Then | |
| objDbrProcess.MoveFirst | |
| End If | |
| Do Until objDbrProcess.EOF | |
| oWord.Selection.TypeText CStr(objDbrProcess.Fields.Item("Caption")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrProcess.Fields.Item("ExecutablePath")) : oWord.Selection.MoveRight | |
| objDbrProcess.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIServices) Then | |
| ReportProgress " Writing Services" | |
| WriteHeader 2,"Services" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrServices.Recordcount + 1, 4 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Start Mode" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Started" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Start Name" : oWord.Selection.MoveRight | |
| If Not (objDbrServices.Bof) Then | |
| objDbrServices.MoveFirst | |
| End If | |
| Do Until objDbrServices.EOF | |
| oWord.Selection.TypeText CStr(objDbrServices.Fields.Item("Caption")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrServices.Fields.Item("StartMode")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrServices.Fields.Item("Started")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrServices.Fields.Item("StartName")) : oWord.Selection.MoveRight | |
| objDbrServices.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIFileShares) Then | |
| ReportProgress " Writing File share info" | |
| WriteHeader 2,"Shares" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrShares.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Path" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Description" : oWord.Selection.MoveRight | |
| If Not (objDbrShares.Bof) Then | |
| objDbrShares.MoveFirst | |
| End If | |
| Do Until objDbrShares.EOF | |
| oWord.Selection.TypeText CStr(objDbrShares.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrShares.Fields.Item("Path")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrShares.Fields.Item("Description")) : oWord.Selection.MoveRight | |
| objDbrShares.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| If (bWMIStartupCommands) Then | |
| ReportProgress " Writing startup commands info" | |
| WriteHeader 2,"Startup Commands" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.ActiveDocument.Tables.Add oWord.Selection.Range, objDbrStartupCommand.Recordcount + 1, 3 | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "User" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Name" : oWord.Selection.MoveRight | |
| If Not (bUseSpecificTable) Then | |
| oWord.Selection.Font.Bold = True | |
| End If | |
| oWord.Selection.TypeText "Command" : oWord.Selection.MoveRight | |
| If Not (objDbrStartupCommand.Bof) Then | |
| objDbrStartupCommand.MoveFirst | |
| End If | |
| Do Until objDbrStartupCommand.EOF | |
| oWord.Selection.TypeText CStr(objDbrStartupCommand.Fields.Item("User")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrStartupCommand.Fields.Item("Name")) : oWord.Selection.MoveRight | |
| oWord.Selection.TypeText CStr(objDbrStartupCommand.Fields.Item("Command")) : oWord.Selection.MoveRight | |
| objDbrStartupCommand.MoveNext | |
| Loop | |
| oWord.Selection.TypeText VbCrLf | |
| End If | |
| ReportProgress " Writing Page File information" | |
| WriteHeader 2, "Virtual Memory" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Pagefile(s): " & VbCrLf | |
| If Not (objDbrPagefile.Bof) Then | |
| objDbrPagefile.Movefirst | |
| End If | |
| Do Until objDbrPagefile.Eof | |
| oWord.Selection.TypeText objDbrPagefile.Fields.Item("Drive") & "\ (" & objDbrPagefile.Fields.Item("InitialSize") & " MB - " & _ | |
| objDbrPagefile.Fields.Item("MaximumSize") & " MB)" & VbCrLf | |
| objDbrPagefile.Movenext | |
| Loop | |
| If (bWMIRegistry) Then | |
| ReportProgress " Writing Registry information" | |
| WriteHeader 2,"Windows Registry" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "Current registry size: " & nCurrentSize & " MB" & VbCrLf | |
| oWord.Selection.TypeText "Maximum registry size: " & nMaximumSize & " MB" & VbCrLf | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 8 - Contact Information | |
| '-------------------------------------------------------------------------------- | |
| If (bWordExtras) Then | |
| ReportProgress " Writing Contact Information" | |
| WriteHeader 1,"Contact Information" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "[System owner [Name, title, telephone, e-mail]" & VbCrLf | |
| oWord.Selection.TypeText "[Hardware vendors [Name, telephone, website, e-mail etc.] " & VbCrLf | |
| oWord.Selection.TypeText "[Software vendors [Name, telephone, website, e-mail etc.]" & VbCrLf | |
| End If | |
| '-------------------------------------------------------------------------------- | |
| 'Chapter 9 - Passwords | |
| '-------------------------------------------------------------------------------- | |
| If (bWordExtras) Then | |
| ReportProgress " Writing Password section" | |
| WriteHeader 1,"Passwords" | |
| oWord.Selection.Style = wdStyleBodyText | |
| oWord.Selection.TypeText "[Depending on your security policy and where you are planning on keeping this document you might want to delete this section.]" & vbCrLf | |
| End If | |
| If (bUseSpecificTable) Then | |
| For i = 1 To CInt(oWord.ActiveDocument.Tables.Count) | |
| oWord.ActiveDocument.Tables(i).Style = strWordTable | |
| Next | |
| End If | |
| If Not (bUseDOTFile) Then | |
| ' Adding header and footer | |
| If oWord.ActiveWindow.View.SplitSpecial = wdPaneNone Then | |
| oWord.ActiveWindow.ActivePane.View.Type = wdPrintView | |
| Else | |
| oWord.ActiveWindow.View.Type = wdPrintView | |
| End If | |
| oWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader | |
| oWord.Selection.TypeText "Basic documentation For " & strComputerSystem_Name | |
| oWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter | |
| oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight | |
| oWord.Selection.TypeText "Page (" | |
| oWord.Selection.Fields.Add oWord.Selection.Range, wdFieldPage | |
| oWord.Selection.TypeText "/" | |
| oWord.Selection.Fields.Add oWord.Selection.Range, wdFieldNumPages | |
| oWord.Selection.TypeText ")" | |
| oWord.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument | |
| End If | |
| ' Update table of contents | |
| ReportProgress " Updating Tables Of Contents" | |
| oWord.ActiveDocument.TablesOfContents.Item(1).Update | |
| oWord.ActiveDocument.BuiltInDocumentProperties(wdPropertyComments).Value = "Generated by SYDI-Server " & strScriptVersion & " (http://sydiproject.com)" | |
| If (bSaveFile) Then | |
| ReportProgress " Saving Document" | |
| oWord.ActiveDocument.SaveAs strSaveFile | |
| If (Err <> 0) Then | |
| ReportProgress Err.Number & " -- " & Err.Description & " (" & strSaveFile & ")" | |
| ReportProgress " Would not save to " & strSaveFile | |
| ReportProgress " Did you specify a path?" | |
| Err.Clear | |
| Exit Sub | |
| End If | |
| End If | |
| If (bShowWord = False And bSaveFile = True) Then | |
| ReportProgress " Document Saved" | |
| oWord.Application.Quit | |
| Set oWord = Nothing | |
| ReportProgress "End subroutine: PopulateWordfile()" | |
| Else | |
| oWord.Application.Visible = True | |
| ReportProgress "End subroutine: PopulateWordfile()" | |
| End If | |
| Set oListTemplate = Nothing | |
| Set oWord = Nothing | |
| End Sub ' PopulateWordfile | |
| Sub PopulateXMLFile() | |
| Dim objFS, objXMLFile | |
| ReportProgress VbCrLf & "Start subroutine: PopulateXMLfile()" | |
| Set objFS = CreateObject("Scripting.FileSystemObject") | |
| Set objXMLFile = objFS.CreateTextFile(strSaveFile, True) | |
| objXMLFile.WriteLine "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>" | |
| Select Case strStylesheet | |
| Case "html" | |
| objXMLFile.WriteLine "<?xml-stylesheet type=""text/xsl"" href=""serverhtml.xsl""?>" | |
| Case "freetext" | |
| objXMLFile.WriteLine "<?xml-stylesheet type=""text/xsl"" href=""" & strXSLFreeText & """?>" | |
| End Select | |
| objXMLFile.WriteLine "<computer>" | |
| ' generated | |
| objXMLFile.WriteLine " <generated script=""sydi-server"" version=""" & strScriptVersion & """ scantime=""" & ConvertDateToShortUTC(now) & """ />" | |
| ' computer | |
| objXMLFile.WriteLine " <system name=""" & strComputerSystem_Name & """ />" | |
| ' operatingsystem | |
| objXMLFile.WriteLine " <operatingsystem name=""" & Scrub4XML(strOperatingSystem_Caption) & """ servicepack=""" & strOperatingSystem_ServicePack & """ />" | |
| If (bRegDomainSuffix) Then | |
| ' fqdn | |
| objXMLFile.WriteLine " <fqdn name=""" & LCase(strComputerSystem_Name) & "." & strPrimaryDomain & """ />" | |
| End If | |
| ' Roles | |
| objXMLFile.WriteLine " <roles>" | |
| If Not (objDbrSystemRoles.Bof) Then | |
| objDbrSystemRoles.MoveFirst | |
| End If | |
| Do Until objDbrSystemRoles.EOF | |
| objXMLFile.WriteLine " <role name=""" & Cstr(objDbrSystemRoles.Fields.Item("Role")) & """ />" | |
| objDbrSystemRoles.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </roles>" | |
| ' machineinfo | |
| objXMLFile.WriteLine " <machineinfo manufacturer=""" & strComputerSystemProduct_Manufacturer & _ | |
| """ productname=""" & strComputerSystemProduct_Name & """ identifyingnumber=""" & strComputerSystemProduct_IdentifyingNumber & _ | |
| """ chassis=""" & strChassisType & """ />" | |
| ' Processors | |
| objXMLFile.WriteLine " <processor count=""" & intProcessors & _ | |
| """ name=""" & strProcessor_Name & _ | |
| """ description=""" & strProcessor_Description & _ | |
| """ speed=""" & strProcessor_MaxClockSpeed & _ | |
| """ l2cachesize=""" & strProcessor_L2CacheSize & _ | |
| """ externalclock=""" & strProcessor_ExtClock & _ | |
| """ htsystem=""" & bProcessorHTSystem & """ />" | |
| ' Memory | |
| objXMLFile.WriteLine " <memory totalsize=""" & strTotalPhysicalMemoryMB & """>" | |
| If Not (objDbrPhysicalMemory.Bof) Then | |
| objDbrPhysicalMemory.MoveFirst | |
| End If | |
| Do Until objDbrPhysicalMemory.EOF | |
| objXMLFile.WriteLine " <memorybank bank=""" & Scrub4XML(objDbrPhysicalMemory.Fields.Item("BankLabel")) & _ | |
| """ capacity=""" & ReturnBytes2Megabytes(objDbrPhysicalMemory.Fields.Item("Capacity")) & _ | |
| """ formfactor=""" & ReturnPhysicalMemoryFormFactor(objDbrPhysicalMemory.Fields.Item("FormFactor")) & _ | |
| """ memorytype=""" & ReturnPhysicalMemoryMemoryType(objDbrPhysicalMemory.Fields.Item("MemoryType")) & """ />" | |
| objDbrPhysicalMemory.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </memory>" | |
| objXMLFile.WriteLine " <win32_cdromdrive>" | |
| If Not (objDbrCDROMDrive.Bof) Then | |
| objDbrCDROMDrive.MoveFirst | |
| End If | |
| Do Until objDbrCDROMDrive.EOF | |
| objXMLFile.WriteLine " <cdrom name=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Name")) & _ | |
| """ drive=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Drive")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrCDROMDrive.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </win32_cdromdrive>" | |
| 'Tape Drive | |
| If (bHasTapeDrive) Then | |
| objXMLFile.WriteLine " <win32_tapedrive>" | |
| If Not (objDbrTapeDrive.Bof) Then | |
| objDbrTapeDrive.MoveFirst | |
| End If | |
| Do Until objDbrTapeDrive.EOF | |
| objXMLFile.WriteLine " <tapedrive name=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Name")) & _ | |
| """ description=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Description")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrTapeDrive.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </win32_tapedrive>" | |
| End If | |
| 'Video Controller | |
| If (bWMIHardware) Then | |
| objXMLFile.WriteLine " <videocontroller>" | |
| If Not (objDbrVideoController.Bof) Then | |
| objDbrVideoController.MoveFirst | |
| End If | |
| Do Until objDbrVideoController.EOF | |
| objXMLFile.WriteLine " <adapter name=""" & Scrub4XML(objDbrVideoController.Fields.Item("Name")) & _ | |
| """ adapterram=""" & ReturnBytes2Megabytes(objDbrVideoController.Fields.Item("adapterram")) & _ | |
| """ compatibility=""" & Scrub4XML(objDbrVideoController.Fields.Item("AdapterCompatibility")) & """ />" | |
| objDbrVideoController.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </videocontroller>" | |
| End If | |
| If (bWMIHardware) Then | |
| 'Sound Card Information | |
| objXMLFile.WriteLine " <win32_sounddevice>" | |
| If Not (objDbrSoundDevice.Bof) Then | |
| objDbrSoundDevice.MoveFirst | |
| End If | |
| Do Until objDbrSoundDevice.EOF | |
| objXMLFile.WriteLine " <card name=""" & Scrub4XML(objDbrSoundDevice.Fields.Item("Name")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrSoundDevice.Fields.Item("Manufacturer")) & """ />" | |
| objDbrSoundDevice.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </win32_sounddevice>" | |
| End If | |
| ' Bios Versions | |
| If (bWMIBios) Then | |
| objXMLFile.WriteLine " <bios version=""" & strBIOS_Version & """ smbiosversion=""" & strBIOS_SMBIOSBIOSVersion & _ | |
| """ smbiosmajorversion=""" & strBIOS_SMBIOSMajorVersion &_ | |
| """ smbbiosminorversion=""" & strBIOS_SMBIOSMinorVersion & """>" | |
| For i = 0 To Ubound(arrBIOS_BiosCharacteristics) | |
| objXMLFile.WriteLine " <bioscharacteristics id=""" & arrBIOS_BiosCharacteristics(i) & _ | |
| """ name=""" & Cstr(ReturnBiosCharacteristic(arrBIOS_BiosCharacteristics(i))) & """ />" | |
| Next | |
| objXMLFile.WriteLine " </bios>" | |
| End If | |
| ' OS Configuration | |
| objXMLFile.WriteLine " <osconfiguration osname=""" & strOperatingSystem_Caption & _ | |
| """ computerrole=""" & strComputerRole & _ | |
| """ domainname=""" & strComputerSystem_Domain & _ | |
| """ domaintype=""" & strDomainType & _ | |
| """ windowslocation=""" & strOperatingSystem_WindowsDirectory & _ | |
| """ oslanguage=""" & ReturnOperatingSystemLanguage(strOperatingSystem_LanguageCode) & _ | |
| """ installdate=""" & ConvertWMIDate(strOperatingSystem_InstallDate) & """ />" | |
| ' Last User | |
| If (bRegLastUser) Then | |
| objXMLFile.WriteLine " <lastuser name=""" & strLastUser & """ />" | |
| End If | |
| ' Windows Components | |
| If (bRegWindowsComponents) Then | |
| objXMLFile.WriteLine " <windowscomponents>" | |
| If Not (objDbrWindowsComponents.Bof) Then | |
| objDbrWindowsComponents.Movefirst | |
| End If | |
| Do Until objDbrWindowsComponents.EoF | |
| If (objDbrWindowsComponents.Fields.Item("ClassName") <> "Hidden") Then | |
| objXMLFile.WriteLine " <component name=""" & CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & _ | |
| """ class=""" & objDbrWindowsComponents.Fields.Item("Class") & _ | |
| """ classname=""" & CStr(objDbrWindowsComponents.Fields.Item("ClassName")) & _ | |
| """ level=""" & objDbrWindowsComponents.Fields.Item("Level") & """ />" | |
| End If | |
| objDbrWindowsComponents.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </windowscomponents>" | |
| End If | |
| ' Patches | |
| If (bWMIPatches) Then | |
| objXMLFile.WriteLine " <patches>" | |
| If Not (objDbrPatches.Bof) Then | |
| objDbrPatches.Movefirst | |
| End If | |
| Do Until objDbrPatches.Eof | |
| objXMLFile.WriteLine " <patch description=""" & Scrub4XML(objDbrPatches.Fields.Item("Description")) & _ | |
| """ hotfixid=""" & Scrub4XML(objDbrPatches.Fields.Item("HotfixID")) & _ | |
| """ installdate=""" & Scrub4XML(objDbrPatches.Fields.Item("InstallDate")) & """ />" | |
| objDbrPatches.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </patches>" | |
| End If | |
| objXMLFile.WriteLine " <installedapplications>" | |
| ' msiapplications | |
| If (bWMIApplications) Then | |
| If Not (objDbrProducts.Bof) Then | |
| objDbrProducts.MoveFirst | |
| End If | |
| Do Until objDbrProducts.EOF | |
| objXMLFile.WriteLine " <msiapplication productname=""" & Scrub4XML(objDbrProducts.Fields.Item("ProductName")) &_ | |
| """ vendor=""" & Scrub4XML(objDbrProducts.Fields.Item("Vendor")) & _ | |
| """ version=""" & Scrub4XML(objDbrProducts.Fields.Item("Version")) & _ | |
| """ installdate=""" & CStr(objDbrProducts.Fields.Item("InstallDate")) & """ />" | |
| objDbrProducts.MoveNext | |
| Loop | |
| End If | |
| ' Registry Applications | |
| If (bRegPrograms) Then | |
| If Not (objDbrRegPrograms.Bof) Then | |
| objDbrRegPrograms.MoveFirst | |
| End If | |
| Do Until objDbrRegPrograms.EOF | |
| objXMLFile.WriteLine " <regapplication productname=""" & Scrub4XML(objDbrRegPrograms.Fields.Item("DisplayName")) &_ | |
| """ version=""" & Scrub4XML(objDbrRegPrograms.Fields.Item("DisplayVersion")) & """ />" | |
| objDbrRegPrograms.MoveNext | |
| Loop | |
| End If | |
| ' Product Keys | |
| If (bRegProductKeys) Then | |
| If Not (objDbrRegProductKeys.Bof) Then | |
| objDbrRegProductKeys.Movefirst | |
| End If | |
| Do Until objDbrRegProductKeys.Eof | |
| objXMLFile.WriteLine " <productkey productname=""" & Scrub4XML(objDbrRegProductKeys("ProductName")) & _ | |
| """ productkey=""" & Scrub4XML(objDbrRegProductKeys("ProductKey")) & """ />" | |
| objDbrRegProductKeys.MoveNext | |
| Loop | |
| End If | |
| objXMLFile.WriteLine " </installedapplications>" | |
| ' storage | |
| objXMLFile.WriteLine " <storage>" | |
| If Not (objDbrDrives.Bof) Then | |
| objDbrDrives.Movefirst | |
| End If | |
| Do Until objDbrDrives.Eof | |
| objXMLFile.WriteLine " <drives name=""" & objDbrDrives.Fields.Item("Caption") & _ | |
| """ deviceid=""" & objDbrDrives.Fields.Item("DeviceID") & _ | |
| """ interface=""" & objDbrDrives.Fields.Item("InterfaceType") & _ | |
| """ totaldisksize=""" & Round(ReturnBytes2Gigabytes(objDbrDrives.Fields.Item("Size")), 2) & """>" | |
| If Not (objDbrDisks.Bof) Then | |
| objDbrDisks.MoveFirst | |
| End If | |
| objDbrDisks.Filter = " ParentDriveID='" & objDbrDrives.Fields.Item("DeviceID") & "'" | |
| Do Until objDbrDisks.Eof | |
| objXMLFile.WriteLine " <partition name=""" & objDbrDisks.Fields.Item("Caption") & _ | |
| """ size=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("Size")),2) & _ | |
| """ freespace=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("FreeSpace")),2) & _ | |
| """ filesystem=""" & objDbrDisks.Fields.Item("FileSystem") & """ />" | |
| objDbrDisks.MoveNext | |
| Loop | |
| objDbrDrives.MoveNext | |
| objXMLFile.WriteLine " </drives>" | |
| Loop | |
| objXMLFile.WriteLine " </storage>" | |
| ' network configuration | |
| objXMLFile.WriteLine " <network>" | |
| For i = 0 To UBound(arrNetadapter_Description) | |
| objXMLFile.WriteLine " <adapter description=""" & arrNetadapter_Description(i) & _ | |
| """ macaddress=""" & arrNetadapter_MACAddress(i) & """>" | |
| For j = 0 To UBound(arrNetadapter_IPAddress,2) | |
| If (arrNetadapter_IPAddress(i,j) <> "") Then | |
| objXMLFile.WriteLine " <ip address=""" & arrNetadapter_IPAddress(i,j) & _ | |
| """ subnetmask=""" & arrNetadapter_IPSubnet(i,j) & """ />" | |
| End If | |
| Next | |
| For j = 0 To UBound(arrNetadapter_DefaultIPGateway,2) | |
| objXMLFile.WriteLine " <gateway address=""" & arrNetadapter_DefaultIPGateway(i,j) & """ />" | |
| Next | |
| For j = 0 To Ubound(arrNetadapter_DNSServerSearchOrder,2) | |
| If (arrNetadapter_DNSServerSearchOrder(i,j) <> "") Then | |
| objXMLFile.WriteLine " <dnsserver address=""" & arrNetadapter_DNSServerSearchOrder(i,j) & """ />" | |
| End If | |
| Next | |
| objXMLFile.WriteLine " <dnsdomain name=""" & arrNetadapter_DNS(i) & """ />" | |
| If (arrNetadapter_WINSPrimaryServer(i) <> "" And arrNetadapter_WINSPrimaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile.WriteLine " <primarywins address=""" & arrNetadapter_WINSPrimaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_WINSSecondaryServer(i) <> "" And arrNetadapter_WINSSecondaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile.WriteLine " <secondarywins address=""" & arrNetadapter_WINSSecondaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_DHCPEnabled(i)) Then | |
| objXMLFile.WriteLine " <dhcpserver address=""" & arrNetadapter_DHCPServer(i) & """ />" | |
| End If | |
| objXMLFile.WriteLine " </adapter>" | |
| Next | |
| If (bWMIIP4Routes) Then | |
| objXMLFile.WriteLine " <ip4routes>" | |
| If Not (objDbrIP4RouteTable.Bof) Then | |
| objDbrIP4RouteTable.Movefirst | |
| Do Until objDbrIP4RouteTable.EOF | |
| objXMLFile.WriteLine " <route destination=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("Destination")) & _ | |
| """ mask=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("Mask")) & _ | |
| """ nexthop=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("nexthop")) & """ />" | |
| objDbrIP4RouteTable.MoveNext | |
| Loop | |
| End If | |
| objXMLFile.WriteLine " </ip4routes>" | |
| End If | |
| objXMLFile.WriteLine " </network>" | |
| ' IIS Settings | |
| If (bHasMicrosoftIISv2) Then | |
| ReportProgress " Writing IIS Information" | |
| objXMLFile.WriteLine " <microsoftiisv2>" | |
| If Not (objDbrIISWebServerSetting.Bof) Then | |
| objDbrIISWebServerSetting.Movefirst | |
| End If | |
| Do Until objDbrIISWebServerSetting.Eof | |
| objXMLFile.WriteLine " <iiswebserversetting name=""" & Scrub4XML(objDbrIISWebServerSetting("Name")) & _ | |
| """ servercomment=""" & Scrub4XML(objDbrIISWebServerSetting("servercomment")) & """>" | |
| If Not (objDbrIISVirtualDirSetting.Bof) Then | |
| objDbrIISVirtualDirSetting.Movefirst | |
| End If | |
| objDbrIISVirtualDirSetting.Filter = " Name='" & objDbrIISWebServerSetting("Name") & "/root'" | |
| Do Until objDbrIISVirtualDirSetting.Eof | |
| objXMLFile.WriteLine " <homedirectory path=""" & Scrub4XML(objDbrIISVirtualDirSetting("Path")) & """ />" | |
| objDbrIISVirtualDirSetting.MoveNext | |
| Loop | |
| objDbrIISWebServerBindings.Filter = " ServerName='" & objDbrIISWebServerSetting("Name") & "'" | |
| If Not (objDbrIISWebServerBindings.Bof) Then | |
| objDbrIISWebServerBindings.MoveFirst | |
| End If | |
| Do Until objDbrIISWebServerBindings.EOF | |
| objXMLFile.WriteLine " <serverbindings hostname=""" & Scrub4XML(objDbrIISWebServerBindings("Hostname")) & _ | |
| """ ip=""" & Scrub4XML(objDbrIISWebServerBindings("Ip")) & _ | |
| """ port=""" & Scrub4XML(objDbrIISWebServerBindings("Port")) & """ />" | |
| objDbrIISWebServerBindings.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </iiswebserversetting>" | |
| objDbrIISWebServerSetting.Movenext | |
| Loop | |
| objXMLFile.WriteLine " </microsoftiisv2>" | |
| End If | |
| ' eventlogfiles | |
| If (bWMIEventLogFile) Then | |
| objXMLFile.WriteLine " <eventlogfiles>" | |
| objDbrEventLogFile.Movefirst | |
| Do Until objDbrEventLogFile.Eof | |
| objXMLFile.WriteLine " <eventlogfile name=""" & CStr(objDbrEventLogFile.Fields.Item("LogFileName")) & _ | |
| """ file=""" & objDbrEventLogFile.Fields.Item("Name") & _ | |
| """ maximumsize=""" & ReturnBytes2Megabytes(objDbrEventLogFile.Fields.Item("MaxFileSize")) & _ | |
| """ overwritepolicy=""" & objDbrEventLogFile.Fields.Item("OverwritePolicy") & """ />" | |
| objDbrEventLogFile.Movenext | |
| Loop | |
| objXMLFile.WriteLine " </eventlogfiles>" | |
| End If | |
| ' local groups | |
| If (bWMILocalGroups) Then | |
| objXMLFile.WriteLine " <localgroups>" | |
| If Not (objDbrLocalGroups.Bof) Then | |
| objDbrLocalGroups.Movefirst | |
| End If | |
| Do Until objDbrLocalGroups.Eof | |
| objXMLFile.WriteLine " <group name=""" & Scrub4XML(objDbrLocalGroups.Fields.Item("Name")) & """>" | |
| objDbrGroupUser.Filter = " Groupname='" & objDbrLocalGroups.Fields.Item("Name") & "'" | |
| Do Until objDbrGroupUser.Eof | |
| objXMLFile.WriteLine " <member name=""" & Scrub4XML(objDbrGroupUser.Fields.Item("Member")) & """ />" | |
| objDbrGroupUser.MoveNext | |
| Loop | |
| objDbrLocalGroups.Movenext | |
| objXMLFile.WriteLine " </group>" | |
| Loop | |
| objXMLFile.WriteLine " </localgroups>" | |
| End If | |
| ' local users | |
| If (bWMILocalAccounts) Then | |
| objXMLFile.WriteLine " <localusers>" | |
| If Not (objDbrLocalAccounts.Bof) Then | |
| objDbrLocalAccounts.Movefirst | |
| End If | |
| Do Until objDbrLocalAccounts.Eof | |
| objXMLFile.WriteLine " <user name=""" & Scrub4XML(objDbrLocalAccounts.Fields.Item("UserName")) & """ description=""" & Scrub4XML(objDbrLocalAccounts.Fields.Item("Description")) & """ />" | |
| objDbrLocalAccounts.Movenext | |
| Loop | |
| objXMLFile.WriteLine " </localusers>" | |
| End If | |
| ' printspooler location | |
| If (bRegPrintSpoolLocation) Then | |
| objXMLFile.WriteLine " <printspooler location=""" & strPrintSpoolLocation & """ />" | |
| End If | |
| ' printers | |
| If (bWMIPrinters) Then | |
| If (objDbrPrinters.Recordcount > 0) Then | |
| objXMLFile.WriteLine " <printers>" | |
| objDbrPrinters.MoveFirst | |
| Do Until objDbrPrinters.EOF | |
| objXMLFile.WriteLine " <printer name=""" & Scrub4XML(objDbrPrinters.Fields.Item("Name")) & _ | |
| """ drivername=""" & Scrub4XML(objDbrPrinters.Fields.Item("DriverName")) & _ | |
| """ portname=""" & Scrub4XML(objDbrPrinters.Fields.Item("PortName")) & """ />" | |
| objDbrPrinters.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </printers>" | |
| End If | |
| End If | |
| ' regional settings | |
| objXMLFile.WriteLine " <regional timezone=""" & Scrub4XML(strTimeZone) & """ />" | |
| ' Running Processes | |
| If (bWMIRunningProcesses) Then | |
| ReportProgress " Writing Processes information" | |
| objXMLFile.WriteLine " <processes>" | |
| If Not (objDbrProcess.Bof) Then | |
| objDbrProcess.MoveFirst | |
| End If | |
| Do Until objDbrProcess.EOF | |
| objXMLFile.WriteLine " <process caption=""" & Scrub4XML(objDbrProcess.Fields.Item("Caption")) &_ | |
| """ executablepath=""" & Scrub4XML(objDbrProcess.Fields.Item("ExecutablePath")) & """ />" | |
| objDbrProcess.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </processes>" | |
| End If | |
| ' services | |
| If (bWMIServices) Then | |
| objXMLFile.WriteLine " <services>" | |
| If Not (objDbrServices.Bof) Then | |
| objDbrServices.MoveFirst | |
| End If | |
| Do Until objDbrServices.EOF | |
| objXMLFile.WriteLine " <service name=""" & Scrub4XML(objDbrServices.Fields.Item("Caption")) & _ | |
| """ startmode=""" & CStr(objDbrServices.Fields.Item("StartMode")) & _ | |
| """ started=""" & CStr(objDbrServices.Fields.Item("Started")) & _ | |
| """ startname=""" & Scrub4XML(objDbrServices.Fields.Item("StartName")) & """ />" | |
| objDbrServices.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </services>" | |
| End If | |
| ' shares | |
| If (bWMIFileShares) Then | |
| objXMLFile.WriteLine " <shares>" | |
| If Not (objDbrShares.Bof) Then | |
| objDbrShares.MoveFirst | |
| End If | |
| Do Until objDbrShares.EOF | |
| objXMLFile.WriteLine " <share name=""" & Scrub4XML(objDbrShares.Fields.Item("Name")) & _ | |
| """ path=""" & Scrub4XML(objDbrShares.Fields.Item("Path")) & _ | |
| """ description=""" & Scrub4XML(objDbrShares.Fields.Item("Description")) & """ />" | |
| objDbrShares.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </shares>" | |
| End If | |
| ' Startup Commands | |
| If (bWMIStartupCommands) Then | |
| objXMLFile.WriteLine " <win32_startupcommand>" | |
| If Not (objDbrStartupCommand.Bof) Then | |
| objDbrStartupCommand.MoveFirst | |
| End If | |
| Do Until objDbrStartupCommand.EOF | |
| objXMLFile.WriteLine " <command user=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("User")) & _ | |
| """ name=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("Name")) &_ | |
| """ command=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("Command")) & """ />" | |
| objDbrStartupCommand.MoveNext | |
| Loop | |
| objXMLFile.WriteLine " </win32_startupcommand>" | |
| End If | |
| ' virtual memory | |
| objXMLFile.WriteLine " <pagefiles>" | |
| If Not (objDbrPagefile.Bof) Then | |
| objDbrPagefile.Movefirst | |
| End If | |
| Do Until objDbrPagefile.Eof | |
| objXMLFile.WriteLine " <pagefile drive=""" & objDbrPagefile.Fields.Item("Drive") & _ | |
| """ initialsize=""" & objDbrPagefile.Fields.Item("InitialSize") & _ | |
| """ maximumsize=""" & objDbrPagefile.Fields.Item("MaximumSize") & """ />" | |
| objDbrPagefile.Movenext | |
| Loop | |
| objXMLFile.WriteLine " </pagefiles>" | |
| ' registry | |
| If (bWMIRegistry) Then | |
| objXMLFile.WriteLine " <registry currentsize=""" & nCurrentSize & """ maximumsize=""" & nMaximumSize & """ />" | |
| End If | |
| objXMLFile.WriteLine "</computer>" | |
| objXMLFile.Close | |
| ReportProgress "End subroutine: PopulateXMLfile()" | |
| End Sub ' PopulateXMLFile | |
| Sub PopulateHttp() | |
| Dim objWeb, objXMLFile | |
| ReportProgress VbCrLf & "Start subroutine: PopulateHttp()" | |
| 'Set objWeb = CreateObject("Microsoft.XMLHTTP") | |
| Set objWeb = CreateObject("MSXML2.ServerXMLHTTP") | |
| objXMLFile = objXMLFile & "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>" | |
| Select Case strStylesheet | |
| Case "html" | |
| objXMLFile = objXMLFile & "<?xml-stylesheet type=""text/xsl"" href=""serverhtml.xsl""?>" | |
| Case "freetext" | |
| objXMLFile = objXMLFile & "<?xml-stylesheet type=""text/xsl"" href=""" & strXSLFreeText & """?>" | |
| End Select | |
| objXMLFile = objXMLFile & "<computer>" | |
| ' generated | |
| objXMLFile = objXMLFile & " <generated script=""sydi-server"" version=""" & strScriptVersion & """ scantime=""" & ConvertDateToShortUTC(now) & """ />" | |
| ' computer | |
| objXMLFile = objXMLFile & " <system name=""" & strComputerSystem_Name & """ />" | |
| ' operatingsystem | |
| objXMLFile = objXMLFile & " <operatingsystem name=""" & Scrub4XML(strOperatingSystem_Caption) & """ servicepack=""" & strOperatingSystem_ServicePack & """ />" | |
| If (bRegDomainSuffix) Then | |
| ' fqdn | |
| objXMLFile = objXMLFile & " <fqdn name=""" & LCase(strComputerSystem_Name) & "." & strPrimaryDomain & """ />" | |
| End If | |
| ' Roles | |
| objXMLFile = objXMLFile & " <roles>" | |
| If Not (objDbrSystemRoles.Bof) Then | |
| objDbrSystemRoles.MoveFirst | |
| End If | |
| Do Until objDbrSystemRoles.EOF | |
| objXMLFile = objXMLFile & " <role name=""" & Cstr(objDbrSystemRoles.Fields.Item("Role")) & """ />" | |
| objDbrSystemRoles.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </roles>" | |
| ' machineinfo | |
| objXMLFile = objXMLFile & " <machineinfo manufacturer=""" & strComputerSystemProduct_Manufacturer & _ | |
| """ productname=""" & strComputerSystemProduct_Name & """ identifyingnumber=""" & strComputerSystemProduct_IdentifyingNumber & _ | |
| """ chassis=""" & strChassisType & """ />" | |
| ' Processors | |
| objXMLFile = objXMLFile & " <processor count=""" & intProcessors & _ | |
| """ name=""" & strProcessor_Name & _ | |
| """ description=""" & strProcessor_Description & _ | |
| """ speed=""" & strProcessor_MaxClockSpeed & _ | |
| """ l2cachesize=""" & strProcessor_L2CacheSize & _ | |
| """ externalclock=""" & strProcessor_ExtClock & _ | |
| """ htsystem=""" & bProcessorHTSystem & """ />" | |
| ' Memory | |
| objXMLFile = objXMLFile & " <memory totalsize=""" & strTotalPhysicalMemoryMB & """>" | |
| If Not (objDbrPhysicalMemory.Bof) Then | |
| objDbrPhysicalMemory.MoveFirst | |
| End If | |
| Do Until objDbrPhysicalMemory.EOF | |
| objXMLFile = objXMLFile & " <memorybank bank=""" & Scrub4XML(objDbrPhysicalMemory.Fields.Item("BankLabel")) & _ | |
| """ capacity=""" & ReturnBytes2Megabytes(objDbrPhysicalMemory.Fields.Item("Capacity")) & _ | |
| """ formfactor=""" & ReturnPhysicalMemoryFormFactor(objDbrPhysicalMemory.Fields.Item("FormFactor")) & _ | |
| """ memorytype=""" & ReturnPhysicalMemoryMemoryType(objDbrPhysicalMemory.Fields.Item("MemoryType")) & """ />" | |
| objDbrPhysicalMemory.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </memory>" | |
| objXMLFile = objXMLFile & " <win32_cdromdrive>" | |
| If Not (objDbrCDROMDrive.Bof) Then | |
| objDbrCDROMDrive.MoveFirst | |
| End If | |
| Do Until objDbrCDROMDrive.EOF | |
| objXMLFile = objXMLFile & " <cdrom name=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Name")) & _ | |
| """ drive=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Drive")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrCDROMDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrCDROMDrive.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_cdromdrive>" | |
| 'Tape Drive | |
| If (bHasTapeDrive) Then | |
| objXMLFile = objXMLFile & " <win32_tapedrive>" | |
| If Not (objDbrTapeDrive.Bof) Then | |
| objDbrTapeDrive.MoveFirst | |
| End If | |
| Do Until objDbrTapeDrive.EOF | |
| objXMLFile = objXMLFile & " <tapedrive name=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Name")) & _ | |
| """ description=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Description")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrTapeDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrTapeDrive.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_tapedrive>" | |
| End If | |
| 'Video Controller | |
| If (bWMIHardware) Then | |
| objXMLFile = objXMLFile & " <videocontroller>" | |
| If Not (objDbrVideoController.Bof) Then | |
| objDbrVideoController.MoveFirst | |
| End If | |
| Do Until objDbrVideoController.EOF | |
| objXMLFile = objXMLFile & " <adapter name=""" & Scrub4XML(objDbrVideoController.Fields.Item("Name")) & _ | |
| """ adapterram=""" & ReturnBytes2Megabytes(objDbrVideoController.Fields.Item("adapterram")) & _ | |
| """ compatibility=""" & Scrub4XML(objDbrVideoController.Fields.Item("AdapterCompatibility")) & """ />" | |
| objDbrVideoController.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </videocontroller>" | |
| End If | |
| If (bWMIHardware) Then | |
| 'Sound Card Information | |
| objXMLFile = objXMLFile & " <win32_sounddevice>" | |
| If Not (objDbrSoundDevice.Bof) Then | |
| objDbrSoundDevice.MoveFirst | |
| End If | |
| Do Until objDbrSoundDevice.EOF | |
| objXMLFile = objXMLFile & " <card name=""" & Scrub4XML(objDbrSoundDevice.Fields.Item("Name")) & _ | |
| """ manufacturer=""" & Scrub4XML(objDbrSoundDevice.Fields.Item("Manufacturer")) & """ />" | |
| objDbrSoundDevice.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_sounddevice>" | |
| End If | |
| ' Bios Versions | |
| If (bWMIBios) Then | |
| objXMLFile = objXMLFile & " <bios version=""" & strBIOS_Version & """ smbiosversion=""" & strBIOS_SMBIOSBIOSVersion & _ | |
| """ smbiosmajorversion=""" & strBIOS_SMBIOSMajorVersion &_ | |
| """ smbbiosminorversion=""" & strBIOS_SMBIOSMinorVersion & """>" | |
| For i = 0 To Ubound(arrBIOS_BiosCharacteristics) | |
| objXMLFile = objXMLFile & " <bioscharacteristics id=""" & arrBIOS_BiosCharacteristics(i) & _ | |
| """ name=""" & Cstr(ReturnBiosCharacteristic(arrBIOS_BiosCharacteristics(i))) & """ />" | |
| Next | |
| objXMLFile = objXMLFile & " </bios>" | |
| End If | |
| ' OS Configuration | |
| objXMLFile = objXMLFile & " <osconfiguration osname=""" & strOperatingSystem_Caption & _ | |
| """ computerrole=""" & strComputerRole & _ | |
| """ domainname=""" & strComputerSystem_Domain & _ | |
| """ domaintype=""" & strDomainType & _ | |
| """ windowslocation=""" & strOperatingSystem_WindowsDirectory & _ | |
| """ oslanguage=""" & ReturnOperatingSystemLanguage(strOperatingSystem_LanguageCode) & _ | |
| """ installdate=""" & ConvertWMIDate(strOperatingSystem_InstallDate) & """ />" | |
| ' Last User | |
| If (bRegLastUser) Then | |
| objXMLFile = objXMLFile & " <lastuser name=""" & strLastUser & """ />" | |
| End If | |
| ' Windows Components | |
| If (bRegWindowsComponents) Then | |
| objXMLFile = objXMLFile & " <windowscomponents>" | |
| If Not (objDbrWindowsComponents.Bof) Then | |
| objDbrWindowsComponents.Movefirst | |
| End If | |
| Do Until objDbrWindowsComponents.EoF | |
| If (objDbrWindowsComponents.Fields.Item("ClassName") <> "Hidden") Then | |
| objXMLFile = objXMLFile & " <component name=""" & CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & _ | |
| """ class=""" & objDbrWindowsComponents.Fields.Item("Class") & _ | |
| """ classname=""" & CStr(objDbrWindowsComponents.Fields.Item("ClassName")) & _ | |
| """ level=""" & objDbrWindowsComponents.Fields.Item("Level") & """ />" | |
| End If | |
| objDbrWindowsComponents.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </windowscomponents>" | |
| End If | |
| ' Patches | |
| If (bWMIPatches) Then | |
| objXMLFile = objXMLFile & " <patches>" | |
| If Not (objDbrPatches.Bof) Then | |
| objDbrPatches.Movefirst | |
| End If | |
| Do Until objDbrPatches.Eof | |
| objXMLFile = objXMLFile & " <patch description=""" & Scrub4XML(objDbrPatches.Fields.Item("Description")) & _ | |
| """ hotfixid=""" & Scrub4XML(objDbrPatches.Fields.Item("HotfixID")) & _ | |
| """ installdate=""" & Scrub4XML(objDbrPatches.Fields.Item("InstallDate")) & """ />" | |
| objDbrPatches.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </patches>" | |
| End If | |
| objXMLFile = objXMLFile & " <installedapplications>" | |
| ' msiapplications | |
| If (bWMIApplications) Then | |
| If Not (objDbrProducts.Bof) Then | |
| objDbrProducts.MoveFirst | |
| End If | |
| Do Until objDbrProducts.EOF | |
| objXMLFile = objXMLFile & " <msiapplication productname=""" & Scrub4XML(objDbrProducts.Fields.Item("ProductName")) &_ | |
| """ vendor=""" & Scrub4XML(objDbrProducts.Fields.Item("Vendor")) & _ | |
| """ version=""" & Scrub4XML(objDbrProducts.Fields.Item("Version")) & _ | |
| """ installdate=""" & CStr(objDbrProducts.Fields.Item("InstallDate")) & """ />" | |
| objDbrProducts.MoveNext | |
| Loop | |
| End If | |
| ' Registry Applications | |
| If (bRegPrograms) Then | |
| If Not (objDbrRegPrograms.Bof) Then | |
| objDbrRegPrograms.MoveFirst | |
| End If | |
| Do Until objDbrRegPrograms.EOF | |
| objXMLFile = objXMLFile & " <regapplication productname=""" & Scrub4XML(objDbrRegPrograms.Fields.Item("DisplayName")) &_ | |
| """ version=""" & Scrub4XML(objDbrRegPrograms.Fields.Item("DisplayVersion")) & """ />" | |
| objDbrRegPrograms.MoveNext | |
| Loop | |
| End If | |
| ' Product Keys | |
| If (bRegProductKeys) Then | |
| If Not (objDbrRegProductKeys.Bof) Then | |
| objDbrRegProductKeys.Movefirst | |
| End If | |
| Do Until objDbrRegProductKeys.Eof | |
| objXMLFile = objXMLFile & " <productkey productname=""" & Scrub4XML(objDbrRegProductKeys("ProductName")) & _ | |
| """ productkey=""" & Scrub4XML(objDbrRegProductKeys("ProductKey")) & """ />" | |
| objDbrRegProductKeys.MoveNext | |
| Loop | |
| End If | |
| objXMLFile = objXMLFile & " </installedapplications>" | |
| ' storage | |
| objXMLFile = objXMLFile & " <storage>" | |
| If Not (objDbrDrives.Bof) Then | |
| objDbrDrives.Movefirst | |
| End If | |
| Do Until objDbrDrives.Eof | |
| objXMLFile = objXMLFile & " <drives name=""" & objDbrDrives.Fields.Item("Caption") & _ | |
| """ deviceid=""" & objDbrDrives.Fields.Item("DeviceID") & _ | |
| """ interface=""" & objDbrDrives.Fields.Item("InterfaceType") & _ | |
| """ totaldisksize=""" & Round(ReturnBytes2Gigabytes(objDbrDrives.Fields.Item("Size")), 2) & """>" | |
| If Not (objDbrDisks.Bof) Then | |
| objDbrDisks.MoveFirst | |
| End If | |
| objDbrDisks.Filter = " ParentDriveID='" & objDbrDrives.Fields.Item("DeviceID") & "'" | |
| Do Until objDbrDisks.Eof | |
| objXMLFile = objXMLFile & " <partition name=""" & objDbrDisks.Fields.Item("Caption") & _ | |
| """ size=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("Size")),2) & _ | |
| """ freespace=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("FreeSpace")),2) & _ | |
| """ filesystem=""" & objDbrDisks.Fields.Item("FileSystem") & """ />" | |
| objDbrDisks.MoveNext | |
| Loop | |
| objDbrDrives.MoveNext | |
| objXMLFile = objXMLFile & " </drives>" | |
| Loop | |
| objXMLFile = objXMLFile & " </storage>" | |
| ' network configuration | |
| objXMLFile = objXMLFile & " <network>" | |
| For i = 0 To UBound(arrNetadapter_Description) | |
| objXMLFile = objXMLFile & " <adapter description=""" & arrNetadapter_Description(i) & _ | |
| """ macaddress=""" & arrNetadapter_MACAddress(i) & """>" | |
| For j = 0 To UBound(arrNetadapter_IPAddress,2) | |
| If (arrNetadapter_IPAddress(i,j) <> "") Then | |
| objXMLFile = objXMLFile & " <ip address=""" & arrNetadapter_IPAddress(i,j) & _ | |
| """ subnetmask=""" & arrNetadapter_IPSubnet(i,j) & """ />" | |
| End If | |
| Next | |
| For j = 0 To UBound(arrNetadapter_DefaultIPGateway,2) | |
| objXMLFile = objXMLFile & " <gateway address=""" & arrNetadapter_DefaultIPGateway(i,j) & """ />" | |
| Next | |
| For j = 0 To Ubound(arrNetadapter_DNSServerSearchOrder,2) | |
| If (arrNetadapter_DNSServerSearchOrder(i,j) <> "") Then | |
| objXMLFile = objXMLFile & " <dnsserver address=""" & arrNetadapter_DNSServerSearchOrder(i,j) & """ />" | |
| End If | |
| Next | |
| objXMLFile = objXMLFile & " <dnsdomain name=""" & arrNetadapter_DNS(i) & """ />" | |
| If (arrNetadapter_WINSPrimaryServer(i) <> "" And arrNetadapter_WINSPrimaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile = objXMLFile & " <primarywins address=""" & arrNetadapter_WINSPrimaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_WINSSecondaryServer(i) <> "" And arrNetadapter_WINSSecondaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile = objXMLFile & " <secondarywins address=""" & arrNetadapter_WINSSecondaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_DHCPEnabled(i)) Then | |
| objXMLFile = objXMLFile & " <dhcpserver address=""" & arrNetadapter_DHCPServer(i) & """ />" | |
| End If | |
| objXMLFile = objXMLFile & " </adapter>" | |
| Next | |
| If (bWMIIP4Routes) Then | |
| objXMLFile = objXMLFile & " <ip4routes>" | |
| If Not (objDbrIP4RouteTable.Bof) Then | |
| objDbrIP4RouteTable.Movefirst | |
| Do Until objDbrIP4RouteTable.EOF | |
| objXMLFile = objXMLFile & " <route destination=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("Destination")) & _ | |
| """ mask=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("Mask")) & _ | |
| """ nexthop=""" & Scrub4XML(objDbrIP4RouteTable.Fields.Item("nexthop")) & """ />" | |
| objDbrIP4RouteTable.MoveNext | |
| Loop | |
| End If | |
| objXMLFile = objXMLFile & " </ip4routes>" | |
| End If | |
| objXMLFile = objXMLFile & " </network>" | |
| ' IIS Settings | |
| If (bHasMicrosoftIISv2) Then | |
| ReportProgress " Writing IIS Information" | |
| objXMLFile = objXMLFile & " <microsoftiisv2>" | |
| If Not (objDbrIISWebServerSetting.Bof) Then | |
| objDbrIISWebServerSetting.Movefirst | |
| End If | |
| Do Until objDbrIISWebServerSetting.Eof | |
| objXMLFile = objXMLFile & " <iiswebserversetting name=""" & Scrub4XML(objDbrIISWebServerSetting("Name")) & _ | |
| """ servercomment=""" & Scrub4XML(objDbrIISWebServerSetting("servercomment")) & """>" | |
| If Not (objDbrIISVirtualDirSetting.Bof) Then | |
| objDbrIISVirtualDirSetting.Movefirst | |
| End If | |
| objDbrIISVirtualDirSetting.Filter = " Name='" & objDbrIISWebServerSetting("Name") & "/root'" | |
| Do Until objDbrIISVirtualDirSetting.Eof | |
| objXMLFile = objXMLFile & " <homedirectory path=""" & Scrub4XML(objDbrIISVirtualDirSetting("Path")) & """ />" | |
| objDbrIISVirtualDirSetting.MoveNext | |
| Loop | |
| objDbrIISWebServerBindings.Filter = " ServerName='" & objDbrIISWebServerSetting("Name") & "'" | |
| If Not (objDbrIISWebServerBindings.Bof) Then | |
| objDbrIISWebServerBindings.MoveFirst | |
| End If | |
| Do Until objDbrIISWebServerBindings.EOF | |
| objXMLFile = objXMLFile & " <serverbindings hostname=""" & Scrub4XML(objDbrIISWebServerBindings("Hostname")) & _ | |
| """ ip=""" & Scrub4XML(objDbrIISWebServerBindings("Ip")) & _ | |
| """ port=""" & Scrub4XML(objDbrIISWebServerBindings("Port")) & """ />" | |
| objDbrIISWebServerBindings.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </iiswebserversetting>" | |
| objDbrIISWebServerSetting.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </microsoftiisv2>" | |
| End If | |
| ' eventlogfiles | |
| If (bWMIEventLogFile) Then | |
| objXMLFile = objXMLFile & " <eventlogfiles>" | |
| objDbrEventLogFile.Movefirst | |
| Do Until objDbrEventLogFile.Eof | |
| objXMLFile = objXMLFile & " <eventlogfile name=""" & CStr(objDbrEventLogFile.Fields.Item("LogFileName")) & _ | |
| """ file=""" & objDbrEventLogFile.Fields.Item("Name") & _ | |
| """ maximumsize=""" & ReturnBytes2Megabytes(objDbrEventLogFile.Fields.Item("MaxFileSize")) & _ | |
| """ overwritepolicy=""" & objDbrEventLogFile.Fields.Item("OverwritePolicy") & """ />" | |
| objDbrEventLogFile.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </eventlogfiles>" | |
| End If | |
| ' local groups | |
| If (bWMILocalGroups) Then | |
| objXMLFile = objXMLFile & " <localgroups>" | |
| If Not (objDbrLocalGroups.Bof) Then | |
| objDbrLocalGroups.Movefirst | |
| End If | |
| Do Until objDbrLocalGroups.Eof | |
| objXMLFile = objXMLFile & " <group name=""" & Scrub4XML(objDbrLocalGroups.Fields.Item("Name")) & """>" | |
| objDbrGroupUser.Filter = " Groupname='" & objDbrLocalGroups.Fields.Item("Name") & "'" | |
| Do Until objDbrGroupUser.Eof | |
| objXMLFile = objXMLFile & " <member name=""" & Scrub4XML(objDbrGroupUser.Fields.Item("Member")) & """ />" | |
| objDbrGroupUser.MoveNext | |
| Loop | |
| objDbrLocalGroups.Movenext | |
| objXMLFile = objXMLFile & " </group>" | |
| Loop | |
| objXMLFile = objXMLFile & " </localgroups>" | |
| End If | |
| ' local users | |
| If (bWMILocalAccounts) Then | |
| objXMLFile = objXMLFile & " <localusers>" | |
| If Not (objDbrLocalAccounts.Bof) Then | |
| objDbrLocalAccounts.Movefirst | |
| End If | |
| Do Until objDbrLocalAccounts.Eof | |
| objXMLFile = objXMLFile & " <user name=""" & Scrub4XML(objDbrLocalAccounts.Fields.Item("UserName")) & """ description=""" & Scrub4XML(objDbrLocalAccounts.Fields.Item("Description")) & """ />" | |
| objDbrLocalAccounts.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </localusers>" | |
| End If | |
| ' printspooler location | |
| If (bRegPrintSpoolLocation) Then | |
| objXMLFile = objXMLFile & " <printspooler location=""" & strPrintSpoolLocation & """ />" | |
| End If | |
| ' printers | |
| If (bWMIPrinters) Then | |
| If (objDbrPrinters.Recordcount > 0) Then | |
| objXMLFile = objXMLFile & " <printers>" | |
| objDbrPrinters.MoveFirst | |
| Do Until objDbrPrinters.EOF | |
| objXMLFile = objXMLFile & " <printer name=""" & Scrub4XML(objDbrPrinters.Fields.Item("Name")) & _ | |
| """ drivername=""" & Scrub4XML(objDbrPrinters.Fields.Item("DriverName")) & _ | |
| """ portname=""" & Scrub4XML(objDbrPrinters.Fields.Item("PortName")) & """ />" | |
| objDbrPrinters.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </printers>" | |
| End If | |
| End If | |
| ' regional settings | |
| objXMLFile = objXMLFile & " <regional timezone=""" & Scrub4XML(strTimeZone) & """ />" | |
| ' Running Processes | |
| If (bWMIRunningProcesses) Then | |
| ReportProgress " Writing Processes information" | |
| objXMLFile = objXMLFile & " <processes>" | |
| If Not (objDbrProcess.Bof) Then | |
| objDbrProcess.MoveFirst | |
| End If | |
| Do Until objDbrProcess.EOF | |
| objXMLFile = objXMLFile & " <process caption=""" & Scrub4XML(objDbrProcess.Fields.Item("Caption")) &_ | |
| """ executablepath=""" & Scrub4XML(objDbrProcess.Fields.Item("ExecutablePath")) & """ />" | |
| objDbrProcess.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </processes>" | |
| End If | |
| ' services | |
| If (bWMIServices) Then | |
| objXMLFile = objXMLFile & " <services>" | |
| If Not (objDbrServices.Bof) Then | |
| objDbrServices.MoveFirst | |
| End If | |
| Do Until objDbrServices.EOF | |
| objXMLFile = objXMLFile & " <service name=""" & Scrub4XML(objDbrServices.Fields.Item("Caption")) & _ | |
| """ startmode=""" & CStr(objDbrServices.Fields.Item("StartMode")) & _ | |
| """ started=""" & CStr(objDbrServices.Fields.Item("Started")) & _ | |
| """ startname=""" & Scrub4XML(objDbrServices.Fields.Item("StartName")) & """ />" | |
| objDbrServices.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </services>" | |
| End If | |
| ' shares | |
| If (bWMIFileShares) Then | |
| objXMLFile = objXMLFile & " <shares>" | |
| If Not (objDbrShares.Bof) Then | |
| objDbrShares.MoveFirst | |
| End If | |
| Do Until objDbrShares.EOF | |
| objXMLFile = objXMLFile & " <share name=""" & Scrub4XML(objDbrShares.Fields.Item("Name")) & _ | |
| """ path=""" & Scrub4XML(objDbrShares.Fields.Item("Path")) & _ | |
| """ description=""" & Scrub4XML(objDbrShares.Fields.Item("Description")) & """ />" | |
| objDbrShares.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </shares>" | |
| End If | |
| ' Startup Commands | |
| If (bWMIStartupCommands) Then | |
| objXMLFile = objXMLFile & " <win32_startupcommand>" | |
| If Not (objDbrStartupCommand.Bof) Then | |
| objDbrStartupCommand.MoveFirst | |
| End If | |
| Do Until objDbrStartupCommand.EOF | |
| objXMLFile = objXMLFile & " <command user=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("User")) & _ | |
| """ name=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("Name")) &_ | |
| """ command=""" & Scrub4XML(objDbrStartupCommand.Fields.Item("Command")) & """ />" | |
| objDbrStartupCommand.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_startupcommand>" | |
| End If | |
| ' virtual memory | |
| objXMLFile = objXMLFile & " <pagefiles>" | |
| If Not (objDbrPagefile.Bof) Then | |
| objDbrPagefile.Movefirst | |
| End If | |
| Do Until objDbrPagefile.Eof | |
| objXMLFile = objXMLFile & " <pagefile drive=""" & objDbrPagefile.Fields.Item("Drive") & _ | |
| """ initialsize=""" & objDbrPagefile.Fields.Item("InitialSize") & _ | |
| """ maximumsize=""" & objDbrPagefile.Fields.Item("MaximumSize") & """ />" | |
| objDbrPagefile.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </pagefiles>" | |
| ' registry | |
| If (bWMIRegistry) Then | |
| objXMLFile = objXMLFile & " <registry currentsize=""" & nCurrentSize & """ maximumsize=""" & nMaximumSize & """ />" | |
| End If | |
| objXMLFile = objXMLFile & "</computer>" | |
| ' Now we try to post the data | |
| objWeb.open "POST", strWebUrl, False | |
| objWeb.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" | |
| objWeb.setRequestHeader "User-Agent", "sydi-collector.vbs version " + strScriptVersion + " (awdit fork 05062011)" | |
| Dim mSendData | |
| mSendData = objXMLFile | |
| 'objWeb.setRequestHeader "Content-Length", len(mSendData) | |
| objWeb.send mSendData | |
| ReportProgress "Response: " & objWeb.responseText | |
| ReportProgress "About to send to http: " & strWebUrl | |
| Set objWeb = Nothing | |
| ReportProgress "End subroutine: PopulateHttp()" | |
| End Sub 'PopulateHttp | |
| Sub PopulateAwdit() | |
| Dim objWeb, objXMLFile | |
| strWebUrl = "https://collector.awdit.com/feeds/submit/" | |
| ReportProgress VbCrLf & "Start subroutine: PopulateAwdit()" | |
| 'Set objWeb = CreateObject("Microsoft.XMLHTTP") | |
| Set objWeb = CreateObject("MSXML2.ServerXMLHTTP") | |
| objXMLFile = objXMLFile & "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>" | |
| Select Case strStylesheet | |
| Case "html" | |
| objXMLFile = objXMLFile & "<?xml-stylesheet type=""text/xsl"" href=""serverhtml.xsl""?>" | |
| Case "freetext" | |
| objXMLFile = objXMLFile & "<?xml-stylesheet type=""text/xsl"" href=""" & strXSLFreeText & """?>" | |
| End Select | |
| objXMLFile = objXMLFile & "<computer>" | |
| ' generated | |
| objXMLFile = objXMLFile & " <generated script=""sydi-server"" version=""" & strScriptVersion & """ scantime=""" & ConvertDateToShortUTC(now) & """ />" | |
| ' computer | |
| objXMLFile = objXMLFile & " <system name=""" & strComputerSystem_Name & """ />" | |
| ' operatingsystem | |
| objXMLFile = objXMLFile & " <operatingsystem name=""" & Scrub4Web(strOperatingSystem_Caption) & """ servicepack=""" & strOperatingSystem_ServicePack & """ />" | |
| If (bRegDomainSuffix) Then | |
| ' fqdn | |
| objXMLFile = objXMLFile & " <fqdn name=""" & LCase(strComputerSystem_Name) & "." & strPrimaryDomain & """ />" | |
| End If | |
| ' Roles | |
| objXMLFile = objXMLFile & " <roles>" | |
| If Not (objDbrSystemRoles.Bof) Then | |
| objDbrSystemRoles.MoveFirst | |
| End If | |
| Do Until objDbrSystemRoles.EOF | |
| objXMLFile = objXMLFile & " <role name=""" & Cstr(objDbrSystemRoles.Fields.Item("Role")) & """ />" | |
| objDbrSystemRoles.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </roles>" | |
| ' machineinfo | |
| objXMLFile = objXMLFile & " <machineinfo manufacturer=""" & strComputerSystemProduct_Manufacturer & _ | |
| """ productname=""" & strComputerSystemProduct_Name & """ identifyingnumber=""" & strComputerSystemProduct_IdentifyingNumber & _ | |
| """ chassis=""" & strChassisType & """ />" | |
| ' Processors | |
| objXMLFile = objXMLFile & " <processor count=""" & intProcessors & _ | |
| """ name=""" & strProcessor_Name & _ | |
| """ description=""" & strProcessor_Description & _ | |
| """ speed=""" & strProcessor_MaxClockSpeed & _ | |
| """ l2cachesize=""" & strProcessor_L2CacheSize & _ | |
| """ externalclock=""" & strProcessor_ExtClock & _ | |
| """ htsystem=""" & bProcessorHTSystem & """ />" | |
| ' Memory | |
| objXMLFile = objXMLFile & " <memory totalsize=""" & strTotalPhysicalMemoryMB & """>" | |
| If Not (objDbrPhysicalMemory.Bof) Then | |
| objDbrPhysicalMemory.MoveFirst | |
| End If | |
| Do Until objDbrPhysicalMemory.EOF | |
| objXMLFile = objXMLFile & " <memorybank bank=""" & Scrub4Web(objDbrPhysicalMemory.Fields.Item("BankLabel")) & _ | |
| """ capacity=""" & ReturnBytes2Megabytes(objDbrPhysicalMemory.Fields.Item("Capacity")) & _ | |
| """ formfactor=""" & ReturnPhysicalMemoryFormFactor(objDbrPhysicalMemory.Fields.Item("FormFactor")) & _ | |
| """ memorytype=""" & ReturnPhysicalMemoryMemoryType(objDbrPhysicalMemory.Fields.Item("MemoryType")) & """ />" | |
| objDbrPhysicalMemory.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </memory>" | |
| objXMLFile = objXMLFile & " <win32_cdromdrive>" | |
| If Not (objDbrCDROMDrive.Bof) Then | |
| objDbrCDROMDrive.MoveFirst | |
| End If | |
| Do Until objDbrCDROMDrive.EOF | |
| objXMLFile = objXMLFile & " <cdrom name=""" & Scrub4Web(objDbrCDROMDrive.Fields.Item("Name")) & _ | |
| """ drive=""" & Scrub4Web(objDbrCDROMDrive.Fields.Item("Drive")) & _ | |
| """ manufacturer=""" & Scrub4Web(objDbrCDROMDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrCDROMDrive.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_cdromdrive>" | |
| 'Tape Drive | |
| If (bHasTapeDrive) Then | |
| objXMLFile = objXMLFile & " <win32_tapedrive>" | |
| If Not (objDbrTapeDrive.Bof) Then | |
| objDbrTapeDrive.MoveFirst | |
| End If | |
| Do Until objDbrTapeDrive.EOF | |
| objXMLFile = objXMLFile & " <tapedrive name=""" & Scrub4Web(objDbrTapeDrive.Fields.Item("Name")) & _ | |
| """ description=""" & Scrub4Web(objDbrTapeDrive.Fields.Item("Description")) & _ | |
| """ manufacturer=""" & Scrub4Web(objDbrTapeDrive.Fields.Item("Manufacturer")) & """ />" | |
| objDbrTapeDrive.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_tapedrive>" | |
| End If | |
| 'Video Controller | |
| If (bWMIHardware) Then | |
| objXMLFile = objXMLFile & " <videocontroller>" | |
| If Not (objDbrVideoController.Bof) Then | |
| objDbrVideoController.MoveFirst | |
| End If | |
| Do Until objDbrVideoController.EOF | |
| objXMLFile = objXMLFile & " <adapter name=""" & Scrub4Web(objDbrVideoController.Fields.Item("Name")) & _ | |
| """ adapterram=""" & ReturnBytes2Megabytes(objDbrVideoController.Fields.Item("adapterram")) & _ | |
| """ compatibility=""" & Scrub4Web(objDbrVideoController.Fields.Item("AdapterCompatibility")) & """ />" | |
| objDbrVideoController.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </videocontroller>" | |
| End If | |
| If (bWMIHardware) Then | |
| 'Sound Card Information | |
| objXMLFile = objXMLFile & " <win32_sounddevice>" | |
| If Not (objDbrSoundDevice.Bof) Then | |
| objDbrSoundDevice.MoveFirst | |
| End If | |
| Do Until objDbrSoundDevice.EOF | |
| objXMLFile = objXMLFile & " <card name=""" & Scrub4Web(objDbrSoundDevice.Fields.Item("Name")) & _ | |
| """ manufacturer=""" & Scrub4Web(objDbrSoundDevice.Fields.Item("Manufacturer")) & """ />" | |
| objDbrSoundDevice.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_sounddevice>" | |
| End If | |
| ' Bios Versions | |
| If (bWMIBios) Then | |
| objXMLFile = objXMLFile & " <bios version=""" & strBIOS_Version & """ smbiosversion=""" & strBIOS_SMBIOSBIOSVersion & _ | |
| """ smbiosmajorversion=""" & strBIOS_SMBIOSMajorVersion &_ | |
| """ smbbiosminorversion=""" & strBIOS_SMBIOSMinorVersion & """>" | |
| For i = 0 To Ubound(arrBIOS_BiosCharacteristics) | |
| objXMLFile = objXMLFile & " <bioscharacteristics id=""" & arrBIOS_BiosCharacteristics(i) & _ | |
| """ name=""" & Cstr(ReturnBiosCharacteristic(arrBIOS_BiosCharacteristics(i))) & """ />" | |
| Next | |
| objXMLFile = objXMLFile & " </bios>" | |
| End If | |
| ' OS Configuration | |
| objXMLFile = objXMLFile & " <osconfiguration osname=""" & strOperatingSystem_Caption & _ | |
| """ computerrole=""" & strComputerRole & _ | |
| """ domainname=""" & strComputerSystem_Domain & _ | |
| """ domaintype=""" & strDomainType & _ | |
| """ windowslocation=""" & strOperatingSystem_WindowsDirectory & _ | |
| """ oslanguage=""" & ReturnOperatingSystemLanguage(strOperatingSystem_LanguageCode) & _ | |
| """ installdate=""" & ConvertWMIDate(strOperatingSystem_InstallDate) & """ />" | |
| ' Last User | |
| If (bRegLastUser) Then | |
| objXMLFile = objXMLFile & " <lastuser name=""" & strLastUser & """ />" | |
| End If | |
| ' Windows Components | |
| If (bRegWindowsComponents) Then | |
| objXMLFile = objXMLFile & " <windowscomponents>" | |
| If Not (objDbrWindowsComponents.Bof) Then | |
| objDbrWindowsComponents.Movefirst | |
| End If | |
| Do Until objDbrWindowsComponents.EoF | |
| If (objDbrWindowsComponents.Fields.Item("ClassName") <> "Hidden") Then | |
| objXMLFile = objXMLFile & " <component name=""" & CStr(objDbrWindowsComponents.Fields.Item("DisplayName")) & _ | |
| """ class=""" & objDbrWindowsComponents.Fields.Item("Class") & _ | |
| """ classname=""" & CStr(objDbrWindowsComponents.Fields.Item("ClassName")) & _ | |
| """ level=""" & objDbrWindowsComponents.Fields.Item("Level") & """ />" | |
| End If | |
| objDbrWindowsComponents.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </windowscomponents>" | |
| End If | |
| ' Patches | |
| If (bWMIPatches) Then | |
| objXMLFile = objXMLFile & " <patches>" | |
| If Not (objDbrPatches.Bof) Then | |
| objDbrPatches.Movefirst | |
| End If | |
| Do Until objDbrPatches.Eof | |
| objXMLFile = objXMLFile & " <patch description=""" & Scrub4Web(objDbrPatches.Fields.Item("Description")) & _ | |
| """ hotfixid=""" & Scrub4Web(objDbrPatches.Fields.Item("HotfixID")) & _ | |
| """ installdate=""" & Scrub4Web(objDbrPatches.Fields.Item("InstallDate")) & """ />" | |
| objDbrPatches.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </patches>" | |
| End If | |
| objXMLFile = objXMLFile & " <installedapplications>" | |
| ' msiapplications | |
| If (bWMIApplications) Then | |
| If Not (objDbrProducts.Bof) Then | |
| objDbrProducts.MoveFirst | |
| End If | |
| Do Until objDbrProducts.EOF | |
| objXMLFile = objXMLFile & " <msiapplication productname=""" & Scrub4Web(objDbrProducts.Fields.Item("ProductName")) &_ | |
| """ vendor=""" & Scrub4Web(objDbrProducts.Fields.Item("Vendor")) & _ | |
| """ version=""" & Scrub4Web(objDbrProducts.Fields.Item("Version")) & _ | |
| """ installdate=""" & CStr(objDbrProducts.Fields.Item("InstallDate")) & """ />" | |
| objDbrProducts.MoveNext | |
| Loop | |
| End If | |
| ' Registry Applications | |
| If (bRegPrograms) Then | |
| If Not (objDbrRegPrograms.Bof) Then | |
| objDbrRegPrograms.MoveFirst | |
| End If | |
| Do Until objDbrRegPrograms.EOF | |
| objXMLFile = objXMLFile & " <regapplication productname=""" & Scrub4Web(objDbrRegPrograms.Fields.Item("DisplayName")) &_ | |
| """ version=""" & Scrub4Web(objDbrRegPrograms.Fields.Item("DisplayVersion")) & """ />" | |
| objDbrRegPrograms.MoveNext | |
| Loop | |
| End If | |
| ' Product Keys | |
| If (bRegProductKeys) Then | |
| If Not (objDbrRegProductKeys.Bof) Then | |
| objDbrRegProductKeys.Movefirst | |
| End If | |
| Do Until objDbrRegProductKeys.Eof | |
| objXMLFile = objXMLFile & " <productkey productname=""" & Scrub4Web(objDbrRegProductKeys("ProductName")) & _ | |
| """ productkey=""" & Scrub4Web(objDbrRegProductKeys("ProductKey")) & """ />" | |
| objDbrRegProductKeys.MoveNext | |
| Loop | |
| End If | |
| objXMLFile = objXMLFile & " </installedapplications>" | |
| ' storage | |
| objXMLFile = objXMLFile & " <storage>" | |
| If Not (objDbrDrives.Bof) Then | |
| objDbrDrives.Movefirst | |
| End If | |
| Do Until objDbrDrives.Eof | |
| objXMLFile = objXMLFile & " <drives name=""" & objDbrDrives.Fields.Item("Caption") & _ | |
| """ deviceid=""" & objDbrDrives.Fields.Item("DeviceID") & _ | |
| """ interface=""" & objDbrDrives.Fields.Item("InterfaceType") & _ | |
| """ totaldisksize=""" & Round(ReturnBytes2Gigabytes(objDbrDrives.Fields.Item("Size")), 2) & """>" | |
| If Not (objDbrDisks.Bof) Then | |
| objDbrDisks.MoveFirst | |
| End If | |
| objDbrDisks.Filter = " ParentDriveID='" & objDbrDrives.Fields.Item("DeviceID") & "'" | |
| Do Until objDbrDisks.Eof | |
| objXMLFile = objXMLFile & " <partition name=""" & objDbrDisks.Fields.Item("Caption") & _ | |
| """ size=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("Size")),2) & _ | |
| """ freespace=""" & Round(ReturnBytes2Gigabytes(objDbrDisks.Fields.Item("FreeSpace")),2) & _ | |
| """ filesystem=""" & objDbrDisks.Fields.Item("FileSystem") & """ />" | |
| objDbrDisks.MoveNext | |
| Loop | |
| objDbrDrives.MoveNext | |
| objXMLFile = objXMLFile & " </drives>" | |
| Loop | |
| objXMLFile = objXMLFile & " </storage>" | |
| ' network configuration | |
| objXMLFile = objXMLFile & " <network>" | |
| For i = 0 To UBound(arrNetadapter_Description) | |
| objXMLFile = objXMLFile & " <adapter description=""" & arrNetadapter_Description(i) & _ | |
| """ macaddress=""" & arrNetadapter_MACAddress(i) & """>" | |
| For j = 0 To UBound(arrNetadapter_IPAddress,2) | |
| If (arrNetadapter_IPAddress(i,j) <> "") Then | |
| objXMLFile = objXMLFile & " <ip address=""" & arrNetadapter_IPAddress(i,j) & _ | |
| """ subnetmask=""" & arrNetadapter_IPSubnet(i,j) & """ />" | |
| End If | |
| Next | |
| For j = 0 To UBound(arrNetadapter_DefaultIPGateway,2) | |
| objXMLFile = objXMLFile & " <gateway address=""" & arrNetadapter_DefaultIPGateway(i,j) & """ />" | |
| Next | |
| For j = 0 To Ubound(arrNetadapter_DNSServerSearchOrder,2) | |
| If (arrNetadapter_DNSServerSearchOrder(i,j) <> "") Then | |
| objXMLFile = objXMLFile & " <dnsserver address=""" & arrNetadapter_DNSServerSearchOrder(i,j) & """ />" | |
| End If | |
| Next | |
| objXMLFile = objXMLFile & " <dnsdomain name=""" & arrNetadapter_DNS(i) & """ />" | |
| If (arrNetadapter_WINSPrimaryServer(i) <> "" And arrNetadapter_WINSPrimaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile = objXMLFile & " <primarywins address=""" & arrNetadapter_WINSPrimaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_WINSSecondaryServer(i) <> "" And arrNetadapter_WINSSecondaryServer(i) <> "127.0.0.0") Then | |
| objXMLFile = objXMLFile & " <secondarywins address=""" & arrNetadapter_WINSSecondaryServer(i) & """ />" | |
| End If | |
| If (arrNetadapter_DHCPEnabled(i)) Then | |
| objXMLFile = objXMLFile & " <dhcpserver address=""" & arrNetadapter_DHCPServer(i) & """ />" | |
| End If | |
| objXMLFile = objXMLFile & " </adapter>" | |
| Next | |
| If (bWMIIP4Routes) Then | |
| objXMLFile = objXMLFile & " <ip4routes>" | |
| If Not (objDbrIP4RouteTable.Bof) Then | |
| objDbrIP4RouteTable.Movefirst | |
| Do Until objDbrIP4RouteTable.EOF | |
| objXMLFile = objXMLFile & " <route destination=""" & Scrub4Web(objDbrIP4RouteTable.Fields.Item("Destination")) & _ | |
| """ mask=""" & Scrub4Web(objDbrIP4RouteTable.Fields.Item("Mask")) & _ | |
| """ nexthop=""" & Scrub4Web(objDbrIP4RouteTable.Fields.Item("nexthop")) & """ />" | |
| objDbrIP4RouteTable.MoveNext | |
| Loop | |
| End If | |
| objXMLFile = objXMLFile & " </ip4routes>" | |
| End If | |
| objXMLFile = objXMLFile & " </network>" | |
| ' IIS Settings | |
| If (bHasMicrosoftIISv2) Then | |
| ReportProgress " Writing IIS Information" | |
| objXMLFile = objXMLFile & " <microsoftiisv2>" | |
| If Not (objDbrIISWebServerSetting.Bof) Then | |
| objDbrIISWebServerSetting.Movefirst | |
| End If | |
| Do Until objDbrIISWebServerSetting.Eof | |
| objXMLFile = objXMLFile & " <iiswebserversetting name=""" & Scrub4Web(objDbrIISWebServerSetting("Name")) & _ | |
| """ servercomment=""" & Scrub4Web(objDbrIISWebServerSetting("servercomment")) & """>" | |
| If Not (objDbrIISVirtualDirSetting.Bof) Then | |
| objDbrIISVirtualDirSetting.Movefirst | |
| End If | |
| objDbrIISVirtualDirSetting.Filter = " Name='" & objDbrIISWebServerSetting("Name") & "/root'" | |
| Do Until objDbrIISVirtualDirSetting.Eof | |
| objXMLFile = objXMLFile & " <homedirectory path=""" & Scrub4Web(objDbrIISVirtualDirSetting("Path")) & """ />" | |
| objDbrIISVirtualDirSetting.MoveNext | |
| Loop | |
| objDbrIISWebServerBindings.Filter = " ServerName='" & objDbrIISWebServerSetting("Name") & "'" | |
| If Not (objDbrIISWebServerBindings.Bof) Then | |
| objDbrIISWebServerBindings.MoveFirst | |
| End If | |
| Do Until objDbrIISWebServerBindings.EOF | |
| objXMLFile = objXMLFile & " <serverbindings hostname=""" & Scrub4Web(objDbrIISWebServerBindings("Hostname")) & _ | |
| """ ip=""" & Scrub4Web(objDbrIISWebServerBindings("Ip")) & _ | |
| """ port=""" & Scrub4Web(objDbrIISWebServerBindings("Port")) & """ />" | |
| objDbrIISWebServerBindings.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </iiswebserversetting>" | |
| objDbrIISWebServerSetting.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </microsoftiisv2>" | |
| End If | |
| ' eventlogfiles | |
| If (bWMIEventLogFile) Then | |
| objXMLFile = objXMLFile & " <eventlogfiles>" | |
| objDbrEventLogFile.Movefirst | |
| Do Until objDbrEventLogFile.Eof | |
| objXMLFile = objXMLFile & " <eventlogfile name=""" & CStr(objDbrEventLogFile.Fields.Item("LogFileName")) & _ | |
| """ file=""" & objDbrEventLogFile.Fields.Item("Name") & _ | |
| """ maximumsize=""" & ReturnBytes2Megabytes(objDbrEventLogFile.Fields.Item("MaxFileSize")) & _ | |
| """ overwritepolicy=""" & objDbrEventLogFile.Fields.Item("OverwritePolicy") & """ />" | |
| objDbrEventLogFile.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </eventlogfiles>" | |
| End If | |
| ' local groups | |
| If (bWMILocalGroups) Then | |
| objXMLFile = objXMLFile & " <localgroups>" | |
| If Not (objDbrLocalGroups.Bof) Then | |
| objDbrLocalGroups.Movefirst | |
| End If | |
| Do Until objDbrLocalGroups.Eof | |
| objXMLFile = objXMLFile & " <group name=""" & Scrub4Web(objDbrLocalGroups.Fields.Item("Name")) & """>" | |
| objDbrGroupUser.Filter = " Groupname='" & objDbrLocalGroups.Fields.Item("Name") & "'" | |
| Do Until objDbrGroupUser.Eof | |
| objXMLFile = objXMLFile & " <member name=""" & Scrub4Web(objDbrGroupUser.Fields.Item("Member")) & """ />" | |
| objDbrGroupUser.MoveNext | |
| Loop | |
| objDbrLocalGroups.Movenext | |
| objXMLFile = objXMLFile & " </group>" | |
| Loop | |
| objXMLFile = objXMLFile & " </localgroups>" | |
| End If | |
| ' local users | |
| If (bWMILocalAccounts) Then | |
| objXMLFile = objXMLFile & " <localusers>" | |
| If Not (objDbrLocalAccounts.Bof) Then | |
| objDbrLocalAccounts.Movefirst | |
| End If | |
| Do Until objDbrLocalAccounts.Eof | |
| objXMLFile = objXMLFile & " <user name=""" & Scrub4Web(objDbrLocalAccounts.Fields.Item("UserName")) & """ description=""" & Scrub4Web(objDbrLocalAccounts.Fields.Item("Description")) & """ />" | |
| objDbrLocalAccounts.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </localusers>" | |
| End If | |
| ' printspooler location | |
| If (bRegPrintSpoolLocation) Then | |
| objXMLFile = objXMLFile & " <printspooler location=""" & strPrintSpoolLocation & """ />" | |
| End If | |
| ' printers | |
| If (bWMIPrinters) Then | |
| If (objDbrPrinters.Recordcount > 0) Then | |
| objXMLFile = objXMLFile & " <printers>" | |
| objDbrPrinters.MoveFirst | |
| Do Until objDbrPrinters.EOF | |
| objXMLFile = objXMLFile & " <printer name=""" & Scrub4Web(objDbrPrinters.Fields.Item("Name")) & _ | |
| """ drivername=""" & Scrub4Web(objDbrPrinters.Fields.Item("DriverName")) & _ | |
| """ portname=""" & Scrub4Web(objDbrPrinters.Fields.Item("PortName")) & """ />" | |
| objDbrPrinters.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </printers>" | |
| End If | |
| End If | |
| ' regional settings | |
| objXMLFile = objXMLFile & " <regional timezone=""" & Scrub4Web(strTimeZone) & """ />" | |
| ' Running Processes | |
| If (bWMIRunningProcesses) Then | |
| ReportProgress " Writing Processes information" | |
| objXMLFile = objXMLFile & " <processes>" | |
| If Not (objDbrProcess.Bof) Then | |
| objDbrProcess.MoveFirst | |
| End If | |
| Do Until objDbrProcess.EOF | |
| objXMLFile = objXMLFile & " <process caption=""" & Scrub4Web(objDbrProcess.Fields.Item("Caption")) &_ | |
| """ executablepath=""" & Scrub4Web(objDbrProcess.Fields.Item("ExecutablePath")) & """ />" | |
| objDbrProcess.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </processes>" | |
| End If | |
| ' services | |
| If (bWMIServices) Then | |
| objXMLFile = objXMLFile & " <services>" | |
| If Not (objDbrServices.Bof) Then | |
| objDbrServices.MoveFirst | |
| End If | |
| Do Until objDbrServices.EOF | |
| objXMLFile = objXMLFile & " <service name=""" & Scrub4Web(objDbrServices.Fields.Item("Caption")) & _ | |
| """ startmode=""" & CStr(objDbrServices.Fields.Item("StartMode")) & _ | |
| """ started=""" & CStr(objDbrServices.Fields.Item("Started")) & _ | |
| """ startname=""" & Scrub4Web(objDbrServices.Fields.Item("StartName")) & """ />" | |
| objDbrServices.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </services>" | |
| End If | |
| ' shares | |
| If (bWMIFileShares) Then | |
| objXMLFile = objXMLFile & " <shares>" | |
| If Not (objDbrShares.Bof) Then | |
| objDbrShares.MoveFirst | |
| End If | |
| Do Until objDbrShares.EOF | |
| objXMLFile = objXMLFile & " <share name=""" & Scrub4Web(objDbrShares.Fields.Item("Name")) & _ | |
| """ path=""" & Scrub4Web(objDbrShares.Fields.Item("Path")) & _ | |
| """ description=""" & Scrub4Web(objDbrShares.Fields.Item("Description")) & """ />" | |
| objDbrShares.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </shares>" | |
| End If | |
| ' Startup Commands | |
| If (bWMIStartupCommands) Then | |
| objXMLFile = objXMLFile & " <win32_startupcommand>" | |
| If Not (objDbrStartupCommand.Bof) Then | |
| objDbrStartupCommand.MoveFirst | |
| End If | |
| Do Until objDbrStartupCommand.EOF | |
| objXMLFile = objXMLFile & " <command user=""" & Scrub4Web(objDbrStartupCommand.Fields.Item("User")) & _ | |
| """ name=""" & Scrub4Web(objDbrStartupCommand.Fields.Item("Name")) &_ | |
| """ command=""" & Scrub4Web(objDbrStartupCommand.Fields.Item("Command")) & """ />" | |
| objDbrStartupCommand.MoveNext | |
| Loop | |
| objXMLFile = objXMLFile & " </win32_startupcommand>" | |
| End If | |
| ' virtual memory | |
| objXMLFile = objXMLFile & " <pagefiles>" | |
| If Not (objDbrPagefile.Bof) Then | |
| objDbrPagefile.Movefirst | |
| End If | |
| Do Until objDbrPagefile.Eof | |
| objXMLFile = objXMLFile & " <pagefile drive=""" & objDbrPagefile.Fields.Item("Drive") & _ | |
| """ initialsize=""" & objDbrPagefile.Fields.Item("InitialSize") & _ | |
| """ maximumsize=""" & objDbrPagefile.Fields.Item("MaximumSize") & """ />" | |
| objDbrPagefile.Movenext | |
| Loop | |
| objXMLFile = objXMLFile & " </pagefiles>" | |
| ' registry | |
| If (bWMIRegistry) Then | |
| objXMLFile = objXMLFile & " <registry currentsize=""" & nCurrentSize & """ maximumsize=""" & nMaximumSize & """ />" | |
| End If | |
| objXMLFile = objXMLFile & "</computer>" | |
| ' Now we try to post the data | |
| objWeb.open "POST", strWebUrl & "?source=1&key=" & strWebKey & "&account=" & strWebAccount & "&location=" & Escape(strAwditLocation), False | |
| objWeb.setRequestHeader "User-Agent", "sydi-collector.vbs version " + strScriptVersion + " (awdit fork 05062011)" | |
| objWeb.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" | |
| Dim mSendData | |
| mSendData = objXMLFile | |
| 'ReportProgress "Request: " & "source=1&key=" & strWebKey & "&account=" & strWebAccount & "&contents=" | |
| 'objWeb.setRequestHeader "Content-Length", len(mSendData) | |
| objWeb.send mSendData | |
| ReportProgress "Response: " & objWeb.responseText | |
| ReportProgress "About to send to http: " & strWebUrl | |
| Set objWeb = Nothing | |
| ReportProgress "End subroutine: PopulateAwdit()" | |
| End Sub 'PopulateAwdit | |
| function URLEncode (sInput) | |
| if IsNull(sInput) then | |
| URLEncode = "" | |
| exit function | |
| end if | |
| sInput = Replace(sInput, chr(0), "") | |
| sInput = Replace(sInput, "%", "%25") | |
| sInput = Replace(sInput, " ", "%20") | |
| sInput = Replace(sInput, """", "%22") | |
| sInput = Replace(sInput, "&", "%26") | |
| sInput = Replace(sInput, "'", "%27") | |
| sInput = Replace(sInput, "/", "%2F") | |
| sInput = Replace(sInput, "?", "%3F") | |
| sInput = Replace(sInput, "\", "%5C") | |
| URLEncode = sInput | |
| end function | |
| Sub ReportProgress(strMessage) | |
| WScript.Echo strMessage | |
| End Sub ' ReportProgress | |
| Function ReturnBiosCharacteristic(nBiosCharacteristic) | |
| Dim strBiosCharacteristic | |
| Select Case nBiosCharacteristic | |
| Case 0 | |
| strBiosCharacteristic = "Reserved" | |
| Case 1 | |
| strBiosCharacteristic = "Reserved" | |
| Case 2 | |
| strBiosCharacteristic = "Unknown" | |
| Case 3 | |
| strBiosCharacteristic = "BIOS Characteristics Not Supported" | |
| Case 4 | |
| strBiosCharacteristic = "ISA is supported" | |
| Case 5 | |
| strBiosCharacteristic = "MCA is supported" | |
| Case 6 | |
| strBiosCharacteristic = "EISA is supported" | |
| Case 7 | |
| strBiosCharacteristic = "PCI is supported" | |
| Case 8 | |
| strBiosCharacteristic = "PC Card (PCMCIA) is supported" | |
| Case 9 | |
| strBiosCharacteristic = "Plug and Play is supported" | |
| Case 10 | |
| strBiosCharacteristic = "APM is supported" | |
| Case 11 | |
| strBiosCharacteristic = "BIOS is Upgradable (Flash)" | |
| Case 12 | |
| strBiosCharacteristic = "BIOS shadowing is allowed" | |
| Case 13 | |
| strBiosCharacteristic = "VL-VESA is supported" | |
| Case 14 | |
| strBiosCharacteristic = "ESCD support is available" | |
| Case 15 | |
| strBiosCharacteristic = "Boot from CD is supported" | |
| Case 16 | |
| strBiosCharacteristic = "Selectable Boot is supported" | |
| Case 17 | |
| strBiosCharacteristic = "BIOS ROM is socketed" | |
| Case 18 | |
| strBiosCharacteristic = "Boot From PC Card (PCMCIA) is supported" | |
| Case 19 | |
| strBiosCharacteristic = "EDD (Enhanced Disk Drive) Specification is supported" | |
| Case 20 | |
| strBiosCharacteristic = "Int 13h - Japanese Floppy for NEC 9800 1.2mb (3.5, 1k Bytes/Sector, 360 RPM) is supported" | |
| Case 21 | |
| strBiosCharacteristic = "Int 13h - Japanese Floppy for Toshiba 1.2mb (3.5, 360 RPM) is supported" | |
| Case 22 | |
| strBiosCharacteristic = "Int 13h - 5.25 / 360 KB Floppy Services are supported" | |
| Case 23 | |
| strBiosCharacteristic = "Int 13h - 5.25 /1.2MB Floppy Services are supported" | |
| Case 24 | |
| strBiosCharacteristic = "13h - 3.5 / 720 KB Floppy Services are supported" | |
| Case 25 | |
| strBiosCharacteristic = "Int 13h - 3.5 / 2.88 MB Floppy Services are supported" | |
| Case 26 | |
| strBiosCharacteristic = "Int 5h, Print Screen Service is supported" | |
| Case 27 | |
| strBiosCharacteristic = "Int 9h, 8042 Keyboard services are supported" | |
| Case 28 | |
| strBiosCharacteristic = "Int 14h, Serial Services are supported" | |
| Case 29 | |
| strBiosCharacteristic = "Int 17h, printer services are supported" | |
| Case 30 | |
| strBiosCharacteristic = "Int 10h, CGA/Mono Video Services are supported" | |
| Case 31 | |
| strBiosCharacteristic = "NEC PC-98" | |
| Case 32 | |
| strBiosCharacteristic = "ACPI supported" | |
| Case 33 | |
| strBiosCharacteristic = "USB Legacy is supported" | |
| Case 34 | |
| strBiosCharacteristic = "AGP is supported" | |
| Case 35 | |
| strBiosCharacteristic = "I2O boot is supported" | |
| Case 36 | |
| strBiosCharacteristic = "LS-120 boot is supported" | |
| Case 37 | |
| strBiosCharacteristic = "ATAPI ZIP Drive boot is supported" | |
| Case 38 | |
| strBiosCharacteristic = "1394 boot is supported" | |
| Case 39 | |
| strBiosCharacteristic = "Smart Battery supported" | |
| Case Else | |
| strBiosCharacteristic = "Unknown (Undocumented)" | |
| End Select | |
| ReturnBiosCharacteristic = strBiosCharacteristic | |
| End Function ' ReturnBiosCharacteristic | |
| Function ReturnBytes2Gigabytes(nBytes) | |
| Dim nGigabytes | |
| If (IsNumeric(nBytes)) Then | |
| nGigabytes = nbytes / (1024 * 1024 * 1024) | |
| Else | |
| nGigabytes = 0 | |
| End If | |
| ReturnBytes2Gigabytes = nGigabytes | |
| End Function ' ReturnBytes2Megabytes | |
| Function ReturnBytes2Megabytes(nBytes) | |
| Dim nMegabytes | |
| If (IsNumeric(nBytes)) Then | |
| nMegabytes = nbytes / (1024 * 1024) | |
| Else | |
| nMegabytes = 0 | |
| End If | |
| ReturnBytes2Megabytes = nMegabytes | |
| End Function ' ReturnBytes2Megabytes | |
| Function ReturnOperatingSystemLanguage(strOSLanguageCode) | |
| Dim strOSLanguageName, strOSTempCode | |
| strOSTempCode = Cstr(strOSLanguageCode) | |
| Select Case strOSLanguageCode | |
| Case "1" | |
| strOSLanguageName = "Arabic" | |
| Case "4" | |
| strOSLanguageName = "Chinese" | |
| Case "9" | |
| strOSLanguageName = "English" | |
| Case "401" | |
| strOSLanguageName = "Arabic - Saudi Arabia" | |
| Case "402" | |
| strOSLanguageName = "Bulgarian" | |
| Case "403" | |
| strOSLanguageName = "Catalan" | |
| Case "404" | |
| strOSLanguageName = "Chinese - Taiwan" | |
| Case "405" | |
| strOSLanguageName = "Czech" | |
| Case "406" | |
| strOSLanguageName = "Danish" | |
| Case "407" | |
| strOSLanguageName = "German" | |
| Case "408" | |
| strOSLanguageName = "Greek" | |
| Case "409" | |
| strOSLanguageName = "English" | |
| Case "40A" | |
| strOSLanguageName = "Spanish - Traditional Sort" | |
| Case "40B" | |
| strOSLanguageName = "Finnish" | |
| Case "40C" | |
| strOSLanguageName = "French - France" | |
| Case "40D" | |
| strOSLanguageName = "Hebrew" | |
| Case "40E" | |
| strOSLanguageName = "Hungarian" | |
| Case "40F" | |
| strOSLanguageName = "Icelandic" | |
| Case "410" | |
| strOSLanguageName = "Italian - Italy" | |
| Case "411" | |
| strOSLanguageName = "Japanese" | |
| Case "412" | |
| strOSLanguageName = "Korean" | |
| Case "413" | |
| strOSLanguageName = "Dutch - Netherlands" | |
| Case "414" | |
| strOSLanguageName = "Norwegian - Bokmal" | |
| Case "415" | |
| strOSLanguageName = "Polish" | |
| Case "416" | |
| strOSLanguageName = "Portuguese - Brazil" | |
| Case "417" | |
| strOSLanguageName = "Rhaeto-Romanic" | |
| Case "418" | |
| strOSLanguageName = "Romanian" | |
| Case "419" | |
| strOSLanguageName = "Russian" | |
| Case "41A" | |
| strOSLanguageName = "Croatian" | |
| Case "41B" | |
| strOSLanguageName = "Slovak" | |
| Case "41C" | |
| strOSLanguageName = "Albanian" | |
| Case "41D" | |
| strOSLanguageName = "Swedish" | |
| Case "41E" | |
| strOSLanguageName = "Thai" | |
| Case "41F" | |
| strOSLanguageName = "Turkish" | |
| Case "420" | |
| strOSLanguageName = "Urdu" | |
| Case "421" | |
| strOSLanguageName = "Indonesian" | |
| Case "422" | |
| strOSLanguageName = "Ukrainian" | |
| Case "423" | |
| strOSLanguageName = "Belarusian" | |
| Case "424" | |
| strOSLanguageName = "Slovenian" | |
| Case "425" | |
| strOSLanguageName = "Estonian" | |
| Case "426" | |
| strOSLanguageName = "Estonian" | |
| Case "426" | |
| strOSLanguageName = "Latvian" | |
| Case "427" | |
| strOSLanguageName = "Lithuanian" | |
| Case "429" | |
| strOSLanguageName = "Persion" | |
| Case "42A" | |
| strOSLanguageName = "Vietnamese" | |
| Case "42D" | |
| strOSLanguageName = "Basque" | |
| Case "42E" | |
| strOSLanguageName = "Serbian" | |
| Case "42F" | |
| strOSLanguageName = "Macedonian (FYROM)" | |
| Case "430" | |
| strOSLanguageName = "Sutu" | |
| Case "431" | |
| strOSLanguageName = "Tsonga" | |
| Case "432" | |
| strOSLanguageName = "Tswana" | |
| Case "434" | |
| strOSLanguageName = "Xhosa" | |
| Case "435" | |
| strOSLanguageName = "Zulu" | |
| Case "436" | |
| strOSLanguageName = "Afrikaans" | |
| Case "438" | |
| strOSLanguageName = "Faeroese" | |
| Case "43A" | |
| strOSLanguageName = "Maltese" | |
| Case "43C" | |
| strOSLanguageName = "Gaelic" | |
| Case "43D" | |
| strOSLanguageName = "Yiddish" | |
| Case "43E" | |
| strOSLanguageName = "Malay - Malaysia" | |
| Case "801" | |
| strOSLanguageName = "Arabic - Iraq" | |
| Case "804" | |
| strOSLanguageName = "Chinese - PRC" | |
| Case "807" | |
| strOSLanguageName = "German - Switzerland" | |
| Case "809" | |
| strOSLanguageName = "English - United Kingdom" | |
| Case "80A" | |
| strOSLanguageName = "Spanish - Mexico" | |
| Case "80C" | |
| strOSLanguageName = "French - Belgium" | |
| Case "810" | |
| strOSLanguageName = "Italian - Switzerland" | |
| Case "813" | |
| strOSLanguageName = "Dutch - Belgium" | |
| Case "814" | |
| strOSLanguageName = "Norwegian - Nynorsk" | |
| Case "816" | |
| strOSLanguageName = "Portuguese - Portugal" | |
| Case "818" | |
| strOSLanguageName = "Romanian - Moldova" | |
| Case "819" | |
| strOSLanguageName = "Russian - Moldova" | |
| Case "81A" | |
| strOSLanguageName = "Serbian - Latin" | |
| Case "81D" | |
| strOSLanguageName = "Swedish - Finland" | |
| Case "C01" | |
| strOSLanguageName = "Arabic - Egypt" | |
| Case "C04" | |
| strOSLanguageName = "Chinese - Hong Kong SAR" | |
| Case "C07" | |
| strOSLanguageName = "German - Austria" | |
| Case "C09" | |
| strOSLanguageName = "English - Australia" | |
| Case "C0A" | |
| strOSLanguageName = "Spanish - International Sort" | |
| Case "C0C" | |
| strOSLanguageName = "French - Canada" | |
| Case "C1A" | |
| strOSLanguageName = "Serbian - Cyrillic" | |
| Case "1004" | |
| strOSLanguageName = "Chinese - Singapore" | |
| Case "1007" | |
| strOSLanguageName = "German - Luxembourg" | |
| Case "1009" | |
| strOSLanguageName = "English - Canada" | |
| Case "100A" | |
| strOSLanguageName = "Spanish - Guatemala" | |
| Case "100C" | |
| strOSLanguageName = "French - Switzerland" | |
| Case "1401" | |
| strOSLanguageName = "Arabic - Algeria" | |
| Case "1409" | |
| strOSLanguageName = "English - New Zealand" | |
| Case "140A" | |
| strOSLanguageName = "Spanish - Costa Rica" | |
| Case "140C" | |
| strOSLanguageName = "French - Luxembourg" | |
| Case "1801" | |
| strOSLanguageName = "Arabic - Morocco" | |
| Case "1809" | |
| strOSLanguageName = "English - Ireland" | |
| Case "180A" | |
| strOSLanguageName = "Spanish - Panama" | |
| Case "1C01" | |
| strOSLanguageName = "Arabic - Tunisia" | |
| Case "1C09" | |
| strOSLanguageName = "English - South Africa" | |
| Case "1C0A" | |
| strOSLanguageName = "Spanish - Dominican Republic" | |
| Case "2001" | |
| strOSLanguageName = "Arabic - Oman" | |
| Case "2009" | |
| strOSLanguageName = "English - Jamaica" | |
| Case "200A" | |
| strOSLanguageName = "Spanish - Venezuela" | |
| Case "2401" | |
| strOSLanguageName = "Arabic - Yemen" | |
| Case "240A" | |
| strOSLanguageName = "Spanish - Colombia" | |
| Case "2801" | |
| strOSLanguageName = "Arabic - Syria" | |
| Case "2809" | |
| strOSLanguageName = "English - Belize" | |
| Case "280A" | |
| strOSLanguageName = "Spanish - Peru" | |
| Case "2C01" | |
| strOSLanguageName = "Arabic - Jordan" | |
| Case "2C09" | |
| strOSLanguageName = "English - Trinidad" | |
| Case "2C0A" | |
| strOSLanguageName = "Spanish - Argentina" | |
| Case "3001" | |
| strOSLanguageName = "Arabic - Lebanon" | |
| Case "300A" | |
| strOSLanguageName = "Spanish - Ecuador" | |
| Case "3401" | |
| strOSLanguageName = "Arabic - Kuwait" | |
| Case "340A" | |
| strOSLanguageName = "Spanish - Chile" | |
| Case "3801" | |
| strOSLanguageName = "Arabic - U.A.E." | |
| Case "380A" | |
| strOSLanguageName = "Spanish - Uruguay" | |
| Case "3C01" | |
| strOSLanguageName = "Arabic - Bahrain" | |
| Case "3C0A" | |
| strOSLanguageName = "Spanish - Paraguay" | |
| Case "4001" | |
| strOSLanguageName = "Arabic - Qatar" | |
| Case "400A" | |
| strOSLanguageName = "Spanish - Bolivia" | |
| Case "440A" | |
| strOSLanguageName = "Spanish - El Salvador" | |
| Case "480A" | |
| strOSLanguageName = "Spanish - Honduras" | |
| Case "4C0A" | |
| strOSLanguageName = "Spanish - Nicaragua" | |
| Case "500A" | |
| strOSLanguageName = "Spanish - Puerto Rico" | |
| Case Else | |
| strOSLanguageName = "Unknown" | |
| End Select | |
| ReturnOperatingSystemLanguage = strOSLanguageName | |
| End Function ' ReturnOperatingSystemLanguage | |
| Function ReturnPhysicalMemoryFormFactor(nFormFactor) | |
| Dim strFormFactor | |
| Select Case nFormFactor | |
| Case 0 | |
| strFormFactor = "Unknown" | |
| Case 1 | |
| strFormFactor = "Other" | |
| Case 2 | |
| strFormFactor = "SIP" | |
| Case 3 | |
| strFormFactor = "DIP" | |
| Case 4 | |
| strFormFactor = "ZIP" | |
| Case 5 | |
| strFormFactor = "SOJ" | |
| Case 6 | |
| strFormFactor = "Proprietary" | |
| Case 7 | |
| strFormFactor = "SIMM" | |
| Case 8 | |
| strFormFactor = "DIMM" | |
| Case 9 | |
| strFormFactor = "TSOP" | |
| Case 10 | |
| strFormFactor = "PGA" | |
| Case 11 | |
| strFormFactor = "RIMM" | |
| Case 12 | |
| strFormFactor = "SODIMM" | |
| Case 13 | |
| strFormFactor = "SRIMM" | |
| Case 14 | |
| strFormFactor = "SMD" | |
| Case 15 | |
| strFormFactor = "SSMP" | |
| Case 16 | |
| strFormFactor = "QFP" | |
| Case 17 | |
| strFormFactor = "TQFP" | |
| Case 18 | |
| strFormFactor = "SOIC" | |
| Case 19 | |
| strFormFactor = "LCC" | |
| Case 20 | |
| strFormFactor = "PLCC" | |
| Case 21 | |
| strFormFactor = "BGA" | |
| Case 22 | |
| strFormFactor = "FPBGA" | |
| Case 23 | |
| strFormFactor = "LGA" | |
| Case Else | |
| strFormFactor = "Unknown" | |
| End Select | |
| ReturnPhysicalMemoryFormFactor = strFormFactor | |
| End Function ' ReturnPhysicalMemoryFormFactor | |
| Function ReturnPhysicalMemoryMemoryType(nMemoryType) | |
| Dim strMemoryType | |
| Select Case nMemoryType | |
| Case 0 | |
| strMemoryType = "Unknown" | |
| Case 1 | |
| strMemoryType = "Other" | |
| Case 2 | |
| strMemoryType = "DRAM" | |
| Case 3 | |
| strMemoryType = "Synchronous DRAM" | |
| Case 4 | |
| strMemoryType = "Cache DRAM" | |
| Case 5 | |
| strMemoryType = "EDO" | |
| Case 6 | |
| strMemoryType = "EDRAM" | |
| Case 7 | |
| strMemoryType = "VRAM" | |
| Case 8 | |
| strMemoryType = "SRAM" | |
| Case 9 | |
| strMemoryType = "RAM" | |
| Case 10 | |
| strMemoryType = "ROM" | |
| Case 11 | |
| strMemoryType = "Flash" | |
| Case 12 | |
| strMemoryType = "EEPROM" | |
| Case 13 | |
| strMemoryType = "FEPROM" | |
| Case 14 | |
| strMemoryType = "EPROM" | |
| Case 15 | |
| strMemoryType = "CDRAM" | |
| Case 16 | |
| strMemoryType = "3DRAM" | |
| Case 17 | |
| strMemoryType = "SDRAM" | |
| Case 18 | |
| strMemoryType = "SGRAM" | |
| Case 19 | |
| strMemoryType = "RDRAM" | |
| Case 20 | |
| strMemoryType = "DDR" | |
| Case Else | |
| strMemoryType = "Unknown" | |
| End Select | |
| ReturnPhysicalMemoryMemoryType = strMemoryType | |
| End Function ' ReturnPhysicalMemoryMemoryType | |
| Sub ReturnWindowsComponentName(strRegname) | |
| strRegname = LCase(strRegname) | |
| objDbrWindowsComponents.AddNew | |
| Select Case strRegname | |
| Case "accessopt" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("Name") = strRegname | |
| objDbrWindowsComponents("DisplayName") = "Accessibility Wizard" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "cdplayer" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "CD Player" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "calc" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Calculator" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "charmap" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Character Map" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "clipbook" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Clipboard Viewer" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "deskpaper" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Desktop Wallpaper" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "imagevue" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Imaging" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "mousepoint" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Mouse Pointers" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "mswordpad" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Wordpad" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "objectpkg" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Object Packager" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "paint" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Paint" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "templates" | |
| objDbrWindowsComponents("Class") = "0100" | |
| objDbrWindowsComponents("ClassName") = "Accessories" | |
| objDbrWindowsComponents("DisplayName") = "Document Templates" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "chat" | |
| objDbrWindowsComponents("Class") = "0140" | |
| objDbrWindowsComponents("ClassName") = "Communication" | |
| objDbrWindowsComponents("DisplayName") = "Chat" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "dialer" | |
| objDbrWindowsComponents("Class") = "0140" | |
| objDbrWindowsComponents("ClassName") = "Communication" | |
| objDbrWindowsComponents("DisplayName") = "Phone Dialer" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "hypertrm" | |
| objDbrWindowsComponents("Class") = "0140" | |
| objDbrWindowsComponents("ClassName") = "Communication" | |
| objDbrWindowsComponents("DisplayName") = "HyperTerminal" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "freecell" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Freecell" | |
| objDbrWindowsComponents("Level") = "" | |
| Case "hearts" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Hearts" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "minesweeper" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Minesweeper" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "solitaire" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Solitaire" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "spider" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Spider Solitaire" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "pinball" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Pinball" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "zonegames" | |
| objDbrWindowsComponents("Class") = "0150" | |
| objDbrWindowsComponents("ClassName") = "Games" | |
| objDbrWindowsComponents("DisplayName") = "Internet Games" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "media_clips" | |
| objDbrWindowsComponents("Class") = "0160" | |
| objDbrWindowsComponents("ClassName") = "Multimedia" | |
| objDbrWindowsComponents("DisplayName") = "Sample Sounds" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "com" | |
| objDbrWindowsComponents("Class") = "0170" | |
| objDbrWindowsComponents("DisplayName") = "COM+" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "dtc" | |
| objDbrWindowsComponents("Class") = "0180" | |
| objDbrWindowsComponents("DisplayName") = "Distributed Transaction Coordinator" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "media_utopia" | |
| objDbrWindowsComponents("Class") = "0160" | |
| objDbrWindowsComponents("ClassName") = "Multimedia" | |
| objDbrWindowsComponents("DisplayName") = "Utopia Sound Scheme" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "mplay" | |
| objDbrWindowsComponents("Class") = "0160" | |
| objDbrWindowsComponents("ClassName") = "Multimedia" | |
| objDbrWindowsComponents("DisplayName") = "Media Player" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "rec" | |
| objDbrWindowsComponents("Class") = "0160" | |
| objDbrWindowsComponents("ClassName") = "Multimedia" | |
| objDbrWindowsComponents("DisplayName") = "Sound Recorder" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "vol" | |
| objDbrWindowsComponents("Class") = "0160" | |
| objDbrWindowsComponents("ClassName") = "Multimedia" | |
| objDbrWindowsComponents("DisplayName") = "Volume Control" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "adam" | |
| objDbrWindowsComponents("Class") = "0190" | |
| objDbrWindowsComponents("ClassName") = "Active Directory Services" | |
| objDbrWindowsComponents("DisplayName") = "Active Directory Application Mode (ADAM)" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "adfs" | |
| objDbrWindowsComponents("Class") = "0190" | |
| objDbrWindowsComponents("ClassName") = "Active Directory Services" | |
| objDbrWindowsComponents("DisplayName") = "Active Directory Federation Services (ADFS)" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "appsrv_console" | |
| objDbrWindowsComponents("Class") = "0200" | |
| objDbrWindowsComponents("ClassName") = "Application Server" | |
| objDbrWindowsComponents("DisplayName") = "Application Server Console" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "aspnet" | |
| objDbrWindowsComponents("Class") = "0200" | |
| objDbrWindowsComponents("ClassName") = "Application Server" | |
| objDbrWindowsComponents("DisplayName") = "ASP.NET" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "dtcnetwork" | |
| objDbrWindowsComponents("Class") = "0200" | |
| objDbrWindowsComponents("ClassName") = "Application Server" | |
| objDbrWindowsComponents("DisplayName") = "Enable Network DTC Access" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "complusnetwork" | |
| objDbrWindowsComponents("Class") = "0200" | |
| objDbrWindowsComponents("ClassName") = "Application Server" | |
| objDbrWindowsComponents("DisplayName") = "Enable Network COM+ Access" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "bitsserverextensionsisapi" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "BITS Server Extention ISAPI" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "bitsserverextensionsmanager" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "BITS Management Console Snap-In" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "fp_extensions" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Frontpage Server Extensions" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_common" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Common Files" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_doc" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Documentation" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_ftp" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "FTP Server" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleFTP = True | |
| Case "iis_htmla" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "IIS Manager (HTML)" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_inetmgr" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Internet Information Services Manager" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_nntp" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "NNTP Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleNews = True | |
| Case "iis_pwmgr" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Personal Web Manager" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_smtp" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "SMTP Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleSMTP = True | |
| Case "iis_www" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "World Wide Web Server" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleWWW = True | |
| Case "inetprint" | |
| objDbrWindowsComponents("Class") = "0210" | |
| objDbrWindowsComponents("ClassName") = "Internet Information Server (IIS)" | |
| objDbrWindowsComponents("DisplayName") = "Internet Printing" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iis_asp" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Active Server Pages" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "iis_internetdataconnector" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Internet Data Connector" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "iis_serversideincludes" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Server Side Includes" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "iis_webdav" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "WebDAV Publishing" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "iis_www_vdir_printers" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Printers Virtual Directory" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "iis_www_vdir_scripts" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Scripts Virtual Directory" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "sakit_web" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Remote Administration (HTML)" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "tswebclient" | |
| objDbrWindowsComponents("Class") = "0215" | |
| objDbrWindowsComponents("ClassName") = "World Wide Web Server" | |
| objDbrWindowsComponents("DisplayName") = "Remote Desktop Web Connection" | |
| objDbrWindowsComponents("Level") = "3" | |
| Case "certsrv_client" | |
| objDbrWindowsComponents("Class") = "0300" | |
| objDbrWindowsComponents("ClassName") = "Certificate Services" | |
| objDbrWindowsComponents("DisplayName") = "Certificate Services Web Enrollment Support" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "certsrv_server" | |
| objDbrWindowsComponents("Class") = "0300" | |
| objDbrWindowsComponents("ClassName") = "Certificate Services" | |
| objDbrWindowsComponents("DisplayName") = "Certificate Services CA" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRolePKI = True | |
| Case "dfsext" | |
| objDbrWindowsComponents("Class") = "0305" | |
| objDbrWindowsComponents("DisplayName") = "DFS Extentions Library" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "dfsfrsui" | |
| objDbrWindowsComponents("Class") = "0310" | |
| objDbrWindowsComponents("ClassName") = "Distributed File System" | |
| objDbrWindowsComponents("DisplayName") = "DFS Management" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "dfsrhelper" | |
| objDbrWindowsComponents("Class") = "0310" | |
| objDbrWindowsComponents("ClassName") = "Distributed File System" | |
| objDbrWindowsComponents("DisplayName") = "DFS Replication Diagnostic and Configuration Tools" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "dfsr" | |
| objDbrWindowsComponents("Class") = "0310" | |
| objDbrWindowsComponents("ClassName") = "Distributed File System" | |
| objDbrWindowsComponents("DisplayName") = "DFS Replication Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "cluster" | |
| objDbrWindowsComponents("Class") = "0350" | |
| objDbrWindowsComponents("DisplayName") = "Cluster Service" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "pop3admin" | |
| objDbrWindowsComponents("Class") = "0400" | |
| objDbrWindowsComponents("ClassName") = "E-Mail Services" | |
| objDbrWindowsComponents("DisplayName") = "POP3 Service Web Administration" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "pop3service" | |
| objDbrWindowsComponents("Class") = "0400" | |
| objDbrWindowsComponents("ClassName") = "E-Mail Services" | |
| objDbrWindowsComponents("DisplayName") = "POP3 Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "fax" | |
| objDbrWindowsComponents("Class") = "0500" | |
| objDbrWindowsComponents("DisplayName") = "Fax Services" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "indexsrv_system" | |
| objDbrWindowsComponents("Class") = "0600" | |
| objDbrWindowsComponents("DisplayName") = "Indexing Service" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "iehardenadmin" | |
| objDbrWindowsComponents("Class") = "0700" | |
| objDbrWindowsComponents("ClassName") = "Internet Explorer Enhanced Security Configuration" | |
| objDbrWindowsComponents("DisplayName") = "For administrator groups" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iehardenuser" | |
| objDbrWindowsComponents("Class") = "0700" | |
| objDbrWindowsComponents("ClassName") = "Internet Explorer Enhanced Security Configuration" | |
| objDbrWindowsComponents("DisplayName") = "For all other user groups" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "ieaccess" | |
| objDbrWindowsComponents("Class") = "0800" | |
| objDbrWindowsComponents("DisplayName") = "Internet Explorer (from Start Menu and Desktop)" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "netcm" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Connection Manager Components" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "netcmak" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Connection Manager Administration Kit" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "netcps" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Connection Point Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "fsrstandard" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "File Server Management" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "srm" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "File Server Resource Management" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "hwmgmt" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Hardware Management" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "netmontools" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Network Monitor Tools" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "pmcsnap" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Print Management Component" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "sanmgmt" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Storage Manager for SANs" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "snmp" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "Simple Network Management Protocol" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wbemmsi" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "WMI Windows Installer Provider" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wbemsnmp" | |
| objDbrWindowsComponents("Class") = "0900" | |
| objDbrWindowsComponents("ClassName") = "Management and Monitoring Tools" | |
| objDbrWindowsComponents("DisplayName") = "WMI SNMP Provider" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "freestyle" | |
| objDbrWindowsComponents("Class") = "0910" | |
| objDbrWindowsComponents("ClassName") = "" | |
| objDbrWindowsComponents("DisplayName") = "Media Center" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "netfx20" | |
| objDbrWindowsComponents("Class") = "0920" | |
| objDbrWindowsComponents("ClassName") = "" | |
| objDbrWindowsComponents("DisplayName") = "Microsoft .NET Framework 2.0" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "msmq" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Message Queuing Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_adintegrated" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Active Directory Integration" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_core" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Common (Core Functionallity)" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_httpsupport" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "MSMQ HTTP Support" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_localstorage" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Common (Local Storage)" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_mqdsservice" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Downlevel Client Support" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_routingsupport" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Routing Support" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msmq_triggersservice" | |
| objDbrWindowsComponents("Class") = "1000" | |
| objDbrWindowsComponents("ClassName") = "Message Queuing" | |
| objDbrWindowsComponents("DisplayName") = "Triggers" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "msnexplr" | |
| objDbrWindowsComponents("Class") = "1100" | |
| objDbrWindowsComponents("DisplayName") = "MSN Explorer" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "computeserver" | |
| objDbrWindowsComponents("Class") = "1150" | |
| objDbrWindowsComponents("DisplayName") = "Microsoft Windows Compute Server" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "storageserver" | |
| objDbrWindowsComponents("Class") = "1160" | |
| objDbrWindowsComponents("DisplayName") = "Microsoft Windows Storage Server" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "acs" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "QoS Admission Control Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "beacon" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Internet Gateway Device Discovery and Control Client" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "dhcpserver" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Dynamic Host Configuration Protocol (DHCP)" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleDHCP = True | |
| Case "dns" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Domain Name System (DNS)" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleDNS = True | |
| Case "ias" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Internet Authentication Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleIAS = True | |
| Case "netrqs" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Remote Access Quarantine Service" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "iprip" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "RIP Listener" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "netcis" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "RPC Over HTTP Proxy" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "p2p" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Peer-to-Peer" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "upnp" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Universal Plug and Play" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wins" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Windows Internet Name Service (WINS)" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleWINS = True | |
| Case "simptcp" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Simple TCP/IP Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "ils" | |
| objDbrWindowsComponents("Class") = "1200" | |
| objDbrWindowsComponents("ClassName") = "Networking Services" | |
| objDbrWindowsComponents("DisplayName") = "Site Server ILS Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "lpdsvc" | |
| objDbrWindowsComponents("Class") = "1300" | |
| objDbrWindowsComponents("ClassName") = "Other Network File and Print Services" | |
| objDbrWindowsComponents("DisplayName") = "Print Services for Unix" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "macprint" | |
| objDbrWindowsComponents("Class") = "1300" | |
| objDbrWindowsComponents("ClassName") = "Other Network File and Print Services" | |
| objDbrWindowsComponents("DisplayName") = "Print Services for Macintosh" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "macsrv" | |
| objDbrWindowsComponents("Class") = "1300" | |
| objDbrWindowsComponents("ClassName") = "Other Network File and Print Services" | |
| objDbrWindowsComponents("DisplayName") = "File Services for Macintosh" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "reminst" | |
| objDbrWindowsComponents("Class") = "1400" | |
| objDbrWindowsComponents("DisplayName") = "Remote Installation Services" | |
| objDbrWindowsComponents("Level") = "1" | |
| bRoleRIS = True | |
| Case "scw" | |
| objDbrWindowsComponents("Class") = "1450" | |
| objDbrWindowsComponents("DisplayName") = "Security Configuration Wizard" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "sua" | |
| objDbrWindowsComponents("Class") = "1460" | |
| objDbrWindowsComponents("DisplayName") = "Subsystem for UNIX-based Applications" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "rstorage" | |
| objDbrWindowsComponents("Class") = "1500" | |
| objDbrWindowsComponents("DisplayName") = "Remote Storage" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "iisdbg" | |
| objDbrWindowsComponents("Class") = "1600" | |
| objDbrWindowsComponents("DisplayName") = "Script Debugger" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "tsclients" | |
| objDbrWindowsComponents("Class") = "1700" | |
| objDbrWindowsComponents("ClassName") = "Terminal Services" | |
| objDbrWindowsComponents("DisplayName") = "Client Creator Files" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "tsenable" | |
| objDbrWindowsComponents("Class") = "1700" | |
| objDbrWindowsComponents("ClassName") = "Terminal Services" | |
| objDbrWindowsComponents("DisplayName") = "Enable Terminal Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| If nTerminalServerMode = 1 Then | |
| bRoleTS = True | |
| End If | |
| Case "licenseserver" | |
| objDbrWindowsComponents("Class") = "1800" | |
| objDbrWindowsComponents("DisplayName") = "Terminal Services Licensing" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "uddiadmin" | |
| objDbrWindowsComponents("Class") = "1900" | |
| objDbrWindowsComponents("ClassName") = "UDDI Services" | |
| objDbrWindowsComponents("DisplayName") = "UDDI Services Administration Console" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "uddidatabase" | |
| objDbrWindowsComponents("Class") = "1900" | |
| objDbrWindowsComponents("ClassName") = "UDDI Services" | |
| objDbrWindowsComponents("DisplayName") = "UDDI Services Database Components" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "uddiweb" | |
| objDbrWindowsComponents("Class") = "1900" | |
| objDbrWindowsComponents("ClassName") = "UDDI Services" | |
| objDbrWindowsComponents("DisplayName") = "UDDI Services Web Server Components" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "oeaccess" | |
| objDbrWindowsComponents("Class") = "2000" | |
| objDbrWindowsComponents("DisplayName") = "Outlook Express (on start menu)" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "terminalserver" | |
| objDbrWindowsComponents("Class") = "2050" | |
| objDbrWindowsComponents("DisplayName") = "Terminal Server" | |
| objDbrWindowsComponents("Level") = "1" | |
| If nTerminalServerMode = 1 Then | |
| bRoleTS = True | |
| End If | |
| Case "rootautoupdate" | |
| objDbrWindowsComponents("Class") = "2100" | |
| objDbrWindowsComponents("DisplayName") = "Update Root Certificates" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "autoupdate" | |
| objDbrWindowsComponents("Class") = "2150" | |
| objDbrWindowsComponents("DisplayName") = "Automatic Updates" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "wmpocm" | |
| objDbrWindowsComponents("Class") = "2200" | |
| objDbrWindowsComponents("DisplayName") = "Windows Media Player (from Start Menu and Desktop)" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "msmsgs" | |
| objDbrWindowsComponents("Class") = "2300" | |
| objDbrWindowsComponents("DisplayName") = "Windows Messenger" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "wmaccess" | |
| objDbrWindowsComponents("Class") = "2305" | |
| objDbrWindowsComponents("DisplayName") = "Windows Messenger (from Start Menu)" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "wms_admin" | |
| objDbrWindowsComponents("Class") = "2400" | |
| objDbrWindowsComponents("ClassName") = "Windows Media Services" | |
| objDbrWindowsComponents("DisplayName") = "Windows Media Services Admin" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wms_admin_asp" | |
| objDbrWindowsComponents("Class") = "2400" | |
| objDbrWindowsComponents("ClassName") = "Windows Media Services" | |
| objDbrWindowsComponents("DisplayName") = "Windows Media Services Administrator for the Web" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wms_admin_mmc" | |
| objDbrWindowsComponents("Class") = "2400" | |
| objDbrWindowsComponents("ClassName") = "Windows Media Services" | |
| objDbrWindowsComponents("DisplayName") = "Windows Media Services snap-in" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wms_isapi" | |
| objDbrWindowsComponents("Class") = "2400" | |
| objDbrWindowsComponents("ClassName") = "Windows Media Services" | |
| objDbrWindowsComponents("DisplayName") = "Multicast and Advertisement Logging Agent" | |
| objDbrWindowsComponents("Level") = "2" | |
| Case "wms_server" | |
| objDbrWindowsComponents("Class") = "2400" | |
| objDbrWindowsComponents("ClassName") = "Windows Media Services" | |
| objDbrWindowsComponents("DisplayName") = "Windows Media Services" | |
| objDbrWindowsComponents("Level") = "2" | |
| bRoleMediaServer = True | |
| Case "wbem" | |
| objDbrWindowsComponents("Class") = "2500" | |
| objDbrWindowsComponents("DisplayName") = "WMI" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "sharepoint" | |
| objDbrWindowsComponents("Class") = "2600" | |
| objDbrWindowsComponents("DisplayName") = "Windows Sharepoint Services" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "authman" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "authman" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "cfscommonuifx" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "cfscommonuifx" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "display" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "display" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "fp_vid_deploy" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "fp_vid_deploy" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "fsrcommon" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "fsrcommon" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "netfx" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "netfx" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "notebook" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "notebook" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "ntcomponents" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "ntcomponents" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "oobe" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "oobe" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "starter" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "starter" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "stickynotes" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "stickynotes" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "system" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "system" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "tpg" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "tpg" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case "wms_svrtyplib" | |
| objDbrWindowsComponents("Class") = "9999" | |
| objDbrWindowsComponents("ClassName") = "Hidden" | |
| objDbrWindowsComponents("DisplayName") = "wms_svrtyplib" | |
| objDbrWindowsComponents("Level") = "1" | |
| Case Else | |
| objDbrWindowsComponents("Class") = "3000" | |
| objDbrWindowsComponents("DisplayName") = "* Unknown (" & strRegname & ")" | |
| objDbrWindowsComponents("Level") = "1" | |
| End Select | |
| objDbrWindowsComponents.Update | |
| End Sub ' ReturnWindowsComponentName | |
| Function Scrub(strInput) | |
| If (IsNull(strInput)) Then | |
| strInput = "" | |
| End If | |
| Scrub = strInput | |
| End Function ' Scrub | |
| Function Scrub4XML(strInput) | |
| If (IsNull(strInput)) Then | |
| strInput = "" | |
| Else | |
| strInput = Replace(strInput,"&","&") | |
| strInput = Replace(strInput,"""",""") | |
| strInput = Replace(strInput,"<","<") | |
| strInput = Replace(strInput,">",">") | |
| strInput = Replace(strInput,"'","'") | |
| strInput = Replace(strInput,"","") ' Breaks SYDI-Overview | |
| strInput = Replace(strInput,"©","") ' Breaks SYDI-Overview | |
| strInput = Replace(strInput,"","-") ' Can break XML files with SYDI-Transform | |
| End If | |
| Scrub4XML = strInput | |
| End Function ' Scrub4XML | |
| Function Scrub4Web(sInput) | |
| If (IsNull(sInput)) Then | |
| sInput = "" | |
| Else | |
| sInput = Replace(sInput,"""",""") | |
| sInput = Replace(sInput,"<","<") | |
| sInput = Replace(sInput,">",">") | |
| sInput = Replace(sInput,"'","'") | |
| sInput = Replace(sInput, "%", "%25") | |
| sInput = Replace(sInput, "&", "%26") | |
| End If | |
| Scrub4Web = sInput | |
| End Function ' Scrub4Web | |
| Sub SetOptions(strOption) | |
| Dim strFlag, strParameter | |
| Dim nArguments | |
| nArguments = Len(strOption) | |
| If (nArguments < 2) Then | |
| bInvalidArgument = True | |
| Else | |
| strFlag = Left(strOption,2) | |
| Select Case strFlag | |
| Case "-b" | |
| strWordTable = "" | |
| bUseSpecificTable = True | |
| If (nArguments > 2) Then | |
| strWordTable = Right(strOption,(nArguments - 2)) | |
| End If | |
| If (strWordTable = "") Then | |
| bInvalidArgument = True | |
| End If | |
| Case "-D" | |
| bAllowErrors = False | |
| Case "-w" | |
| bWMIBios = False | |
| bWMIRegistry = False | |
| bWMIApplications = False | |
| bWMIPatches = False | |
| bWMIFileShares = False | |
| bWMIServices = False | |
| bWMIPrinters = False | |
| bWMIEventLogFile = False | |
| bWMILocalAccounts = False | |
| bWMIIP4Routes = False | |
| bWMILocalGroups = False | |
| bWMIRunningProcesses = False | |
| bWMIHardware = False | |
| bWMIStartupCommands = False | |
| If (nArguments > 2) Then | |
| For i = 3 To nArguments | |
| strParameter = Mid(strOption,i,1) | |
| Select Case strParameter | |
| Case "b" | |
| bWMIBios = True | |
| Case "r" | |
| bWMIRegistry = True | |
| Case "a" | |
| bWMIApplications = True | |
| Case "q" | |
| bWMIPatches = True | |
| Case "e" | |
| bWMIEventLogFile = True | |
| Case "f" | |
| bWMIFileShares = True | |
| Case "g" | |
| bWMILocalGroups = True | |
| Case "h" | |
| bWMIHardware = True | |
| Case "i" | |
| bWMIIP4Routes = True | |
| Case "s" | |
| bWMIServices = True | |
| Case "S" | |
| bWMIStartupCommands = True | |
| Case "p" | |
| bWMIPrinters = True | |
| Case "P" | |
| bWMIRunningProcesses = True | |
| Case "u" | |
| bWMILocalAccounts = True | |
| Case Else | |
| bInvalidArgument = True | |
| End Select | |
| Next | |
| End If | |
| Case "-r" | |
| bRegWindowsComponents = False | |
| bRegDomainSuffix = False | |
| bRegPrintSpoolLocation = False | |
| bRegPrograms = False | |
| bRegLastUser = False | |
| bRegProductKeys = False | |
| bDoRegistryCheck = False | |
| If (nArguments > 2) Then | |
| For i = 3 To nArguments | |
| strParameter = Mid(strOption,i,1) | |
| Select Case strParameter | |
| Case "a" | |
| bRegPrograms = True | |
| bDoRegistryCheck = True | |
| Case "c" | |
| bRegWindowsComponents = True | |
| bDoRegistryCheck = True | |
| Case "d" | |
| bRegDomainSuffix = True | |
| bDoRegistryCheck = True | |
| Case "k" | |
| bRegProductKeys = True | |
| bDoRegistryCheck = True | |
| Case "l" | |
| bRegLastUser = True | |
| bDoRegistryCheck = True | |
| Case "p" | |
| bRegPrintSpoolLocation = True | |
| bDoRegistryCheck = True | |
| Case Else | |
| bInvalidArgument = True | |
| End Select | |
| Next | |
| End If | |
| Case "-e" | |
| If (nArguments > 2) Then | |
| For i = 3 To nArguments | |
| strParameter = Mid(strOption,i,1) | |
| Select Case strParameter | |
| Case "w" | |
| strExportFormat = "word" | |
| Case "x" | |
| strExportFormat = "xml" | |
| Case "h" | |
| strExportFormat = "http" | |
| Case "a" | |
| strExportFormat = "awdit" | |
| Case Else | |
| bInvalidArgument = True | |
| End Select | |
| Next | |
| End If | |
| Case "-A" | |
| If (nArguments > 2) Then | |
| strWebAccount = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-L" | |
| If (nArguments > 2) Then | |
| strWebUrl = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-O" | |
| If (nArguments > 2) Then | |
| strAwditLocation = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-K" | |
| If (nArguments > 2) Then | |
| strWebKey = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-s" | |
| If (nArguments > 2) Then | |
| strParameter = Mid(strOption,3,1) | |
| Select Case strParameter | |
| Case "h" | |
| strStylesheet = "html" | |
| Case "t" | |
| strStylesheet = "freetext" | |
| If (Len(strOption) < 4) Then | |
| bInvalidArgument = True | |
| Else | |
| strXSLFreeText = Mid(strOption,4) | |
| End If | |
| Case Else | |
| bInvalidArgument = True | |
| End Select | |
| End If | |
| Case "-t" | |
| If (nArguments > 2) Then | |
| strComputer = Right(strOption,(nArguments - 2)) | |
| End If | |
| Case "-d" | |
| bShowWord = False | |
| Case "-n" | |
| bWordExtras = False | |
| Case "-T" | |
| bUseDOTFile = True | |
| If (nArguments > 2) Then | |
| strDOTFile = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-o" | |
| bSaveFile = True | |
| If (nArguments > 2) Then | |
| strSaveFile = Right(strOption,(nArguments - 2)) | |
| Else | |
| bInvalidArgument = True | |
| End If | |
| Case "-f" | |
| If (nArguments > 2) Then | |
| nBaseFontSize = Right(strOption,(nArguments - 2)) | |
| If Not (IsNumeric(nBaseFontSize)) Then | |
| bInvalidArgument = True | |
| End If | |
| End If | |
| Case "-u" | |
| strUserName = "" | |
| bAlternateCredentials = True | |
| If (nArguments > 2) Then | |
| strUserName = Right(strOption,(nArguments - 2)) | |
| End If | |
| Case "-p" | |
| strPassword = "" | |
| If (nArguments > 2) Then | |
| strPassword = Right(strOption,(nArguments - 2)) | |
| End If | |
| Case "-v" | |
| bCheckVersion = True | |
| Case "-h" | |
| bDisplayHelp = True | |
| Case Else | |
| bInvalidArgument = True | |
| End Select | |
| End If | |
| End Sub ' SetOptions | |
| Sub SystemRolesDefine() | |
| bRoleDC = False | |
| bRoleDHCP = False | |
| bRoleDNS = False | |
| bRoleFile = False | |
| bRoleFTP = False | |
| bRoleIAS = False | |
| bRoleMediaServer = False | |
| bRoleNews = False | |
| bRolePKI = False | |
| bRolePrint = False | |
| bRoleRAS = False | |
| bRoleRIS = False | |
| bRoleSMTP = False | |
| bRoleSQL = False | |
| bRoleTS = False | |
| bRoleWINS = False | |
| bRoleWWW = False | |
| End Sub ' SystemRolesDefine | |
| Sub SystemRolesSet() | |
| Set objDbrSystemRoles = CreateObject("ADOR.Recordset") | |
| objDbrSystemRoles.Fields.Append "Role", adVarChar, MaxCharacters | |
| objDbrSystemRoles.Open | |
| If (bRoleDC) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "DC" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleDHCP) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "DHCP" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleDNS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "DNS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleFile) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "File" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleFTP) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "FTP" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleIAS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "IAS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleMediaServer) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "Media" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleNews) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "News" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRolePKI) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "PKI" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRolePrint) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "Print" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleRAS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "RAS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleRIS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "RIS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleSMTP) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "SMTP" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleSQL) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "SQL" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleTS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "TS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleWINS) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "WINS" | |
| objDbrSystemRoles.Update | |
| End If | |
| If (bRoleWWW) Then | |
| objDbrSystemRoles.AddNew | |
| objDbrSystemRoles("Role") = "WWW" | |
| objDbrSystemRoles.Update | |
| End If | |
| End Sub ' SystemRolesSet | |
| Sub WriteHeader(nHeaderLevel,strHeaderText) | |
| Const wdStyleHeading1 = -2 | |
| Const wdStyleHeading2 = -3 | |
| Const wdStyleHeading3 = -4 | |
| Const wdStyleHeading4 = -5 | |
| Select Case nHeaderLevel | |
| Case 1 | |
| oWord.Selection.Style = wdStyleHeading1 | |
| Case 2 | |
| oWord.Selection.Style = wdStyleHeading2 | |
| Case 3 | |
| oWord.Selection.Style = wdStyleHeading3 | |
| Case 4 | |
| oWord.Selection.Style = wdStyleHeading4 | |
| End Select | |
| oWord.Selection.Range.ListFormat.ApplyListTemplate oListTemplate, True | |
| oWord.Selection.TypeText strHeaderText & vbCrLf | |
| End Sub ' WriteHeader | |
| '========================================================== |