Get SysInfo (IS2120.CSDN)

IS2120@CSDN.BG57IV3
'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//z 2012-5-20 14:44:28 PM IS2120@CSDN
'// NAME:        osinfo.vbs
'//
'// Original:    http://www.cluberti.com/blog
'// Last Update: 28th December 2009
'//
'// Comment:     VBS example file for use as an OS info gathering template.
'//z 2012-5-20 14:44:28 PM IS2120@CSDN
'// NOTE:        Provided as-is - usage of this source assumes that you are at the
'//              very least familiar with the vbscript language being used and
'//              the tools used to create and debug this file.
'//
'//              In other words, if you break it, you get to keep the pieces.
'//
'//              Also, if you want to use this on W2K, prepare to hack, as this
'//              was really designed with XP+ systems in mind.
'//
'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// This script will require elevated privileges if run from a non-admin account, so
'// calling the ElevateThisScript() Sub should get the script a full admin token. This is
'// currently disabled, but if you need non-admin users to run this script, enable the
'// call to this subroutine to pop-up a dialog box (they'll of course need administrative
'// credentials to put in the challenge dialog before the script will execute with an
'// administrative token):

' ElevateThisScript()


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables and wMI connections for scripting against:
CONST HKEY_LOCAL_MACHINE = &H80000002
CONST SEARCH_KEY = "DigitalProductID"
Dim arrSubKeys(4,1)
Dim foundKeys
Dim iValues, arrDPID
foundKeys = Array()
iValues = Array()
arrSubKeys(0,0) = "Windows PID Key:       "
arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
arrSubKeys(2,0) = "Office XP PID Key:     "
arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
arrSubKeys(1,0) = "Office 2003 PID Key:   "
arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
arrSubKeys(3,0) = "Office 2007 PID Key:   "
arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
arrSubKeys(4,0) = "Office 2010 PID Key:   "
arrSubKeys(4,1) = "SOFTWARE\Microsoft\Office\14.0\Registration\{10140000-0011-0000-1000-0000000FF1CE}"

strComputer = "."
Arch = ""
Sku = ""


Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")

Set colOSItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_OperatingSystem",,48)

Set colProcItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_Processor",,48)

Set colCompSysItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_ComputerSystem",,48) 

Set colTZItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_TimeZone",,48) 

Set colCompSysProdItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_ComputerSystemProduct",,48)

Set colBIOSItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_BIOS",,48)

Set colDiskItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_LogicalDisk",,48) 

Set colNetAdapConfigItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration",,48) 

Set colVideoItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_VideoController",,48) 

Set colSoundItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_SoundDevice",,48) 


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get OS SKU from Win32_OperatingSystem class:

    For Each objOSItem in colOSItems
    If objOSItem.BuildNumber => 6000 Then
        Arch = objOSItem.OSArchitecture

        Select Case objOSItem.OperatingSystemSKU
            Case 0 Sku = "Unknown Windows version"
            Case 1 Sku = "Ultimate Edition"
            Case 2 Sku = "Home Basic Edition"
            Case 3 Sku = "Home Premium Edition"
            Case 4 Sku = "Enterprise Edition"
            Case 5 Sku = "Home Basic N Edition"
            Case 6 Sku = "Business Edition"
            Case 7 Sku = "Standard Server Edition"
            Case 8 Sku = "Datacenter Server Edition"
            Case 9 Sku = "Small Business Server Edition"
            Case 10 Sku = "Enterprise Server Edition"
            Case 11 Sku = "Starter Edition"
            Case 12 Sku = "Datacenter Server Core Edition"
            Case 13 Sku = "Standard Server Core Edition"
            Case 14 Sku = "Enterprise Server Core Edition"
            Case 15 Sku = "Enterprise Server Edition for Itanium-Based Systems"
            Case 16 Sku = "Business N Edition"
            Case 17 Sku = "Web Server Edition"
            Case 18 Sku = "Cluster Server Edition"
            Case 19 Sku = "Home Server Edition"
            Case 20 Sku = "Storage Express Server Edition"
            Case 21 Sku = "Storage Standard Server Edition"
            Case 22 Sku = "Storage Workgroup Server Edition"
            Case 23 Sku = "Storage Enterprise Server Edition"
            Case 24 Sku = "Server For Small Business Edition"
            Case 25 Sku = "Small Business Server Premium Edition"
            Case Else
            Sku = "Could Not Determine Operating System SKU"
        End Select
    End If


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get current OS locale setting from Win32_OperatingSystem class:

        Select Case objOSItem.Locale
            Case 0436 Locale = "Afrikaans (South Africa)"
            Case 041c Locale = "Albanian (Albania)"
            ' Case 045e Locale = "Amharic (Ethiopia)"
            Case 0401 Locale = "Arabic (Saudi Arabia)"
            Case 1401 Locale = "Arabic (Algeria)"
            Case 3c01 Locale = "Arabic (Bahrain)"
            Case 0c01 Locale = "Arabic (Egypt)"
            Case 0801 Locale = "Arabic (Iraq)"
            Case 2c01 Locale = "Arabic (Jordan)"
            Case 3401 Locale = "Arabic (Kuwait)"
            Case 3001 Locale = "Arabic (Lebanon)"
            Case 1001 Locale = "Arabic (Libya)"
            Case 1801 Locale = "Arabic (Morocco)"
            Case 2001 Locale = "Arabic (Oman)"
            Case 4001 Locale = "Arabic (Qatar)"
            Case 2801 Locale = "Arabic (Syria)"
            Case 1c01 Locale = "Arabic (Tunisia)"
            Case 3801 Locale = "Arabic (U.A.E.)"
            Case 2401 Locale = "Arabic (Yemen)"
            Case 042b Locale = "Armenian (Armenia)"
            Case 044d Locale = "Assamese"
            Case 082c Locale = "Azeri (Cyrillic)"
            Case 042c Locale = "Azeri (Latin)"
            Case 042d Locale = "Basque"
            Case 0423 Locale = "Belarusian"
            Case 0445 Locale = "Bengali (India)"
            Case 0845 Locale = "Bengali (Bangladesh)"
            Case 141A Locale = "Bosnian (Bosnia/Herzegovina)"
            Case 0402 Locale = "Bulgarian"
            Case 0455 Locale = "Burmese"
            Case 0403 Locale = "Catalan"
            Case 045c Locale = "Cherokee (United States)"
            Case 0804 Locale = "Chinese (PRC)"
            Case 1004 Locale = "Chinese (Singapore)"
            Case 0404 Locale = "Chinese (Taiwan)"
            Case 0c04 Locale = "Chinese (Hong Kong SAR)"
            Case 1404 Locale = "Chinese (Macao SAR)"
            Case 041a Locale = "Croatian"
            Case 101a Locale = "Croatian (Bosnia/Herzegovina)"
            Case 0405 Locale = "Czech"
            Case 0406 Locale = "Danish"
            Case 0465 Locale = "Divehi"
            Case 0413 Locale = "Dutch (Netherlands)"
            Case 0813 Locale = "Dutch (Belgium)"
            Case 0466 Locale = "Edo"
            Case 0409 Locale = "English (United States)"
            Case 0809 Locale = "English (United Kingdom)"
            Case 0c09 Locale = "English (Australia)"
            Case 2809 Locale = "English (Belize)"
            Case 1009 Locale = "English (Canada)"
            Case 2409 Locale = "English (Caribbean)"
            Case 3c09 Locale = "English (Hong Kong SAR)"
            Case 4009 Locale = "English (India)"
            Case 3809 Locale = "English (Indonesia)"
            Case 1809 Locale = "English (Ireland)"
            Case 2009 Locale = "English (Jamaica)"
            Case 4409 Locale = "English (Malaysia)"
            Case 1409 Locale = "English (New Zealand)"
            Case 3409 Locale = "English (Philippines)"
            Case 4809 Locale = "English (Singapore)"
            Case 1c09 Locale = "English (South Africa)"
            Case 2c09 Locale = "English (Trinidad)"
            Case 3009 Locale = "English (Zimbabwe)"
            Case 0425 Locale = "Estonian"
            Case 0438 Locale = "Faroese"
            Case 0429 Locale = "Farsi"
            Case 0464 Locale = "Filipino"
            Case 040b Locale = "Finnish"
            Case 040c Locale = "French (France)"
            Case 080c Locale = "French (Belgium)"
            Case 2c0c Locale = "French (Cameroon)"
            Case 0c0c Locale = "French (Canada)"
            Case 240c Locale = "French (DRC)"
            Case 300c Locale = "French (Cote d'Ivoire)"
            Case 3c0c Locale = "French (Haiti)"
            Case 140c Locale = "French (Luxembourg)"
            Case 340c Locale = "French (Mali)"
            Case 180c Locale = "French (Monaco)"
            Case 380c Locale = "French (Morocco)"
            Case e40c Locale = "French (North Africa)"
            Case 200c Locale = "French (Reunion)"
            Case 280c Locale = "French (Senegal)"
            Case 100c Locale = "French (Switzerland)"
            Case 1c0c Locale = "French (West Indies)"
            Case 0462 Locale = "Frisian (Netherlands)"
            Case 0467 Locale = "Fulfulde (Nigeria)"
            Case 042f Locale = "FYRO Macedonian"
            Case 083c Locale = "Gaelic (Ireland)"
            Case 043c Locale = "Gaelic (Scotland)"
            Case 0456 Locale = "Galician"
            Case 0437 Locale = "Georgian"
            Case 0407 Locale = "German (Germany)"
            Case 0c07 Locale = "German (Austria)"
            Case 1407 Locale = "German (Liechtenstein)"
            Case 1007 Locale = "German (Luxembourg)"
            Case 0807 Locale = "German (Switzerland)"
            Case 0408 Locale = "Greek"
            Case 0474 Locale = "Guarani (Paraguay)"
            Case 0447 Locale = "Gujarati"
            Case 0468 Locale = "Hausa (Nigeria)"
            Case 0475 Locale = "Hawaiian (United States)"
            Case 040d Locale = "Hebrew"
            Case 0439 Locale = "Hindi"
            ' Case 040e Locale = "Hungarian"
            Case 0469 Locale = "Ibibio (Nigeria)"
            Case 040f Locale = "Icelandic"
            Case 0470 Locale = "Igbo (Nigeria)"
            Case 0421 Locale = "Indonesian"
            Case 045d Locale = "Inuktitut"
            Case 0410 Locale = "Italian (Italy)"
            Case 0810 Locale = "Italian (Switzerland)"
            Case 0411 Locale = "Japanese"
            Case 044b Locale = "Kannada"
            Case 0471 Locale = "Kanuri (Nigeria)"
            Case 0860 Locale = "Kashmiri"
            Case 0460 Locale = "Kashmiri (Arabic)"
            Case 043f Locale = "Kazakh"
            Case 0453 Locale = "Khmer"
            Case 0457 Locale = "Konkani"
            Case 0412 Locale = "Korean"
            Case 0440 Locale = "Kyrgyz (Cyrillic)"
            Case 0454 Locale = "Lao"
            Case 0476 Locale = "Latin"
            Case 0426 Locale = "Latvian"
            Case 0427 Locale = "Lithuanian"
            ' Case 043e Locale = "Malay (Malaysia)"
            ' Case 083e Locale = "Malay (Brunei Darussalam)"
            Case 044c Locale = "Malayalam"
            Case 043a Locale = "Maltese"
            Case 0458 Locale = "Manipuri"
            Case 0481 Locale = "Maori (New Zealand)"
            ' Case 044e Locale = "Marathi"
            Case 0450 Locale = "Mongolian (Cyrillic)"
            Case 0850 Locale = "Mongolian (Mongolian)"
            Case 0461 Locale = "Nepali"
            Case 0861 Locale = "Nepali (India)"
            Case 0414 Locale = "Norwegian (Bokm氓l)"
            Case 0814 Locale = "Norwegian (Nynorsk)"
            Case 0448 Locale = "Oriya"
            Case 0472 Locale = "Oromo"
            Case 0479 Locale = "Papiamentu"
            Case 0463 Locale = "Pashto"
            Case 0415 Locale = "Polish"
            Case 0416 Locale = "Portuguese (Brazil)"
            Case 0816 Locale = "Portuguese (Portugal)"
            Case 0446 Locale = "Punjabi"
            Case 0846 Locale = "Punjabi (Pakistan)"
            Case 046B Locale = "Quecha (Bolivia)"
            Case 086B Locale = "Quecha (Ecuador)"
            Case 0C6B Locale = "Quecha (Peru)"
            Case 0417 Locale = "Rhaeto-Romanic"
            Case 0418 Locale = "Romanian"
            Case 0818 Locale = "Romanian (Moldava)"
            Case 0419 Locale = "Russian"
            Case 0819 Locale = "Russian (Moldava)"
            Case 043b Locale = "Sami (Lappish)"
            Case 044f Locale = "Sanskrit"
            Case 046c Locale = "Sepedi"
            Case 0c1a Locale = "Serbian (Cyrillic)"
            Case 081a Locale = "Serbian (Latin)"
            Case 0459 Locale = "Sindhi (India)"
            Case 0859 Locale = "Sindhi (Pakistan)"
            Case 045b Locale = "Sinhalese (Sri Lanka)"
            Case 041b Locale = "Slovak"
            Case 0424 Locale = "Slovenian"
            Case 0477 Locale = "Somali"
            ' Case 042e Locale = "Sorbian"
            Case 0c0a Locale = "Spanish (Spain - Modern Sort)"
            Case 040a Locale = "Spanish (Spain - Traditional Sort)"
            Case 2c0a Locale = "Spanish (Argentina)"
            Case 400a Locale = "Spanish (Bolivia)"
            Case 340a Locale = "Spanish (Chile)"
            Case 240a Locale = "Spanish (Colombia)"
            Case 140a Locale = "Spanish (Costa Rica)"
            Case 1c0a Locale = "Spanish (Dominican Republic)"
            Case 300a Locale = "Spanish (Ecuador)"
            Case 440a Locale = "Spanish (El Salvador)"
            Case 100a Locale = "Spanish (Guatemala)"
            Case 480a Locale = "Spanish (Honduras)"
            Case 580a Locale = "Spanish (Latin America)"
            Case 080a Locale = "Spanish (Mexico)"
            Case 4c0a Locale = "Spanish (Nicaragua)"
            Case 180a Locale = "Spanish (Panama)"
            Case 3c0a Locale = "Spanish (Paraguay)"
            Case 280a Locale = "Spanish (Peru)"
            Case 500a Locale = "Spanish (Puerto Rico)"
            Case 540a Locale = "Spanish (United States)"
            Case 380a Locale = "Spanish (Uruguay)"
            Case 200a Locale = "Spanish (Venezuela)"
            Case 0430 Locale = "Sutu"
            Case 0441 Locale = "Swahili"
            Case 041d Locale = "Swedish"
            Case 081d Locale = "Swedish (Finland)"
            Case 045a Locale = "Syriac"
            Case 0428 Locale = "Tajik"
            Case 045f Locale = "Tamazight (Arabic)"
            Case 085f Locale = "Tamazight (Latin)"
            Case 0449 Locale = "Tamil"
            Case 0444 Locale = "Tatar"
            Case 044a Locale = "Telugu"
            ' Case 041e Locale = "Thai"
            Case 0851 Locale = "Tibetan (Bhutan)"
            Case 0451 Locale = "Tibetan (PRC)"
            Case 0873 Locale = "Tigrigna (Eritrea)"
            Case 0473 Locale = "Tigrigna (Ethiopia)"
            Case 0431 Locale = "Tsonga"
            Case 0432 Locale = "Tswana"
            Case 041f Locale = "Turkish"
            Case 0442 Locale = "Turkmen"
            Case 0480 Locale = "Uighur (China)"
            Case 0422 Locale = "Ukrainian"
            Case 0420 Locale = "Urdu"
            Case 0820 Locale = "Urdu (India)"
            Case 0843 Locale = "Uzbek (Cyrillic)"
            Case 0443 Locale = "Uzbek (Latin)"
            Case 0433 Locale = "Venda"
            Case 042a Locale = "Vietnamese"
            Case 0452 Locale = "Welsh"
            Case 0434 Locale = "Xhosa"
            Case 0478 Locale = "Yi"
            Case 043d Locale = "Yiddish"
            Case 046a Locale = "Yoruba"
            Case 0435 Locale = "Zulu"
            Case 04ff Locale = "HID (Human Interface Device)"
            Case Else
            Locale = "Could Not Determine OS Locale"
        End Select


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_OperatingSystem class:

        Caption = objOSItem.Caption
        CSDVersion = objOSItem.CSDVersion
        CSName = objOSItem.CSName
        Version = objOSItem.Version
        BuildType = objOSItem.BuildType
        BuildNumber = objOSItem.BuildNumber
        SerialNumber = objOSItem.SerialNumber

        objSWbemDateTime.Value = objOSItem.InstallDate
        InstallDate = objSWbemDateTime.GetVarDate(True)

        objSWbemDateTime.Value = objOSItem.LastBootUpTime
        LastBootUpTime = objSWbemDateTime.GetVarDate(True)

        Status = objOSItem.Status
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystem class:

    For Each objCompSysItem in colCompSysItems
        CurrentTimeZone = objCompSysItem.CurrentTimeZone
        DaylightInEffect = objCompSysItem.DaylightInEffect
        TotalMemory = FormatNumber(objCompSysItem.TotalPhysicalMemory/1024^3, 2)
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_TimeZone class:

    For Each objTZItem in colTZItems
        TZName = objTZItem.StandardName
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystemProduct class:

    For Each objCompSysProdItem in colCompSysProdItems
        CompSysName = objCompSysProdItem.Name
        IdentifyingNumber = objCompSysProdItem.IdentifyingNumber
        UUID = objCompSysProdItem.UUID
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_BIOS class:

    For Each objBIOSItem in colBIOSItems
        SMBIOSVersion = objBIOSItem.SMBIOSBIOSVersion
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Start echoing output to the screen

    Wscript.Echo "     ------------------------------------------"
    Wscript.Echo "                   System Details"
    Wscript.Echo "     ------------------------------------------"
    Wscript.Echo ""
    Wscript.Echo "     Computer Name:        " & CSName
    Wscript.Echo ""
    Wscript.Echo ""
    Wscript.Echo "     Operating System Information:"
    Wscript.Echo "     ============================="
    Wscript.Echo "     Operating System:     " & Caption & Arch
    Wscript.Echo "     Version:               " & Version & " " & Sku & " " & CSDVersion
    Wscript.Echo "     Build Type:            " & BuildType
    Wscript.Echo "     Locale:                " & Locale
    Wscript.Echo "     Serial Number:         " & SerialNumber
    Wscript.Echo ""
    Wscript.Echo "     Current Time Zone:     " & TZName
    Wscript.Echo "     Offset from UTC:       " & CurrentTimeZone/60 & " hours"
    Wscript.Echo "     DST In Effect:         " & DaylightInEffect
    Wscript.Echo ""
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get the product keys (function at the end of script):

GetKeys()

    Wscript.Echo ""
    Wscript.Echo "     Install Date:          " & InstallDate
    Wscript.Echo "     Last Boot Time:        " & LastBootUpTime
    Wscript.Echo "     Local Date/Time:       " & Now()
    Wscript.Echo ""
    Wscript.Echo "     System Status:         " & Status
    Wscript.Echo ""
    Wscript.Echo ""
    Wscript.Echo "     Hardware Information:"
    Wscript.Echo "     ====================="


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set and echo variables gathered from Win32_Processor class:

    For Each objProcItem in colProcItems
        Select Case objProcItem.Architecture
            Case 0 CPUArch = "x86"
            Case 1 CPUArch = "MIPS"
            Case 2 CPUArch = "Alpha"
            Case 3 CPUArch = "PowerPC"
            Case 6 CPUArch = "Itanium"
            Case 9 CPUArch = "x64"
            Case Else
            CPUArch = "Could Not Determine CPU Architecture"
        End Select
    Wscript.Echo "     CPU:                  " & objProcItem.Name & " (" & CPUArch & ")"
    Next
    Wscript.Echo ""
    Wscript.Echo "     Physical Memory:      " & TotalMemory & " GB"
    Wscript.Echo ""


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_VideoController class:

    For Each objVideoItem in colVideoItems
        Wscript.Echo "     Video Card:           " & objVideoItem.Name

        If Not objVideoItem.AdapterDACType = "" Then
            Wscript.Echo "     Adapter DAC:           " & objVideoItem.AdapterDACType
        End if

        Wscript.Echo "     PNP Device ID:         " & objVideoItem.PNPDeviceID

        If Not objVideoItem.AdapterRAM = "" Then
            Wscript.Echo "     Video RAM:             " & objVideoItem.AdapterRAM/1024^2 & " MB"
        End If

        Wscript.Echo "     Driver Version:        " & objVideoItem.DriverVersion

        objSWbemDateTime.Value = objVideoItem.DriverDate
        DriverDate = objSWbemDateTime.GetVarDate(False)
        Wscript.Echo "     Driver Date:           " & DriverDate

        Wscript.Echo ""
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_SoundDevice class:

    For Each objSoundItem in colSoundItems
        Wscript.Echo "     Sound Card:           " & objSoundItem.Name
        Wscript.Echo "     Manufacturer:          " & objSoundItem.Manufacturer
        Wscript.Echo "     PNP Device ID:         " & objSoundItem.PNPDeviceID
        Wscript.Echo ""
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_LogicalDisk class:

    For Each objDiskItem in colDiskItems
        If objDiskItem.DriveType = 3 Then
            Wscript.Echo "     Volume:               " & objDiskItem.Caption
            Wscript.Echo "     Compressed:            " & objDiskItem.Compressed
            Wscript.Echo "     File System:           " & objDiskItem.FileSystem
            Wscript.Echo "     Volume Size:           " & FormatNumber(objDiskItem.Size/1024^3, 2) & " GB"
            Wscript.Echo "     Free Space:            " & FormatNumber(objDiskItem.FreeSpace/1024^3, 2) & " GB"
            Wscript.Echo ""
        End If
    Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_NetworkAdapterConfiguration class:

    For Each objNetAdapConfigItem in colNetAdapConfigItems
        If isNull(objNetAdapConfigItem.IPAddress) Then
            '// Skip adapter, not currently used
        Else
            Wscript.Echo "     Network Adapter:      " & objNetAdapConfigItem.Description
            Wscript.Echo "     MAC Address:           " & objNetAdapConfigItem.MACAddress
            Wscript.Echo "     DHCP Enabled:          " & objNetAdapConfigItem.DHCPEnabled
            Wscript.Echo "     IP Address:            " & Join(objNetAdapConfigItem.IPAddress, ",")
            Wscript.Echo "     Subnet Mask:           " & Join(objNetAdapConfigItem.IPSubnet, ",")
            Wscript.Echo "     Default Gateway:       " & Join(objNetAdapConfigItem.DefaultIPGateway, ",")
            If objNetAdapConfigItem.DHCPEnabled = True Then

                objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseObtained
                DHCPLeaseObtained = objSWbemDateTime.GetVarDate(True)
                Wscript.Echo "     Lease Obtained:        " & DHCPLeaseObtained

                objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseExpires
                DHCPLeaseExpires = objSWbemDateTime.GetVarDate(True)
                Wscript.Echo "     Lease Exipres:         " & DHCPLeaseExpires

                Wscript.Echo "     DHCP Servers:          " & objNetAdapConfigItem.DHCPServer
            End If
            Wscript.Echo "     DNS Server:            " & Join(objNetAdapConfigItem.DNSServerSearchOrder, ",")
            If Not objNetAdapConfigItem.WINSPrimaryServer = "" Then
                Wscript.Echo "     WINS Primary Server:   " & objNetAdapConfigItem.WINSPrimaryServer
                If Not objNetAdapConfigItem.WINSSecondaryServer = "" Then
                    Wscript.Echo "     WINS Secondary Server: " & objNetAdapConfigItem.WINSPrimaryServer
                End If
                Wscript.Echo "     Enable LMHosts Lookup: " & objNetAdapConfigItem.WINSEnableLMHostsLookup
            End If
            Wscript.Echo ""
        End If
    Next
    Wscript.Echo ""
    Wscript.Echo "     System Information:"
    Wscript.Echo "     ==================="
    Wscript.Echo "     Computer:             " & CompSysName
    Wscript.Echo "     Serial Number:         " & IdentifyingNumber
    Wscript.Echo "     BIOS Version:          " & SMBIOSVersion
    Wscript.Echo "     UUID:                  " & UUID
    Wscript.Echo ""


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// This pause call is disabled, but you may wish to enable it if running this script
'// with the ElevateThisScript() subroutine call enabled above:

' PressEnter()


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Functions: GetKeys() and decodeKey(iValues, strProduct)
'//
'// Credit where credit is due - I found and modified script posted by user "Parabellum"
'// found on http://www.visualbasicscript.com/m42793.aspx, hacked it up a bit, and used
'// it here to post keys:

Public Function GetKeys()

    For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
    objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes

        If Not IsNull(arrDPIDBytes) Then
            Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
        Else
            objReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys

            If Not IsNull(arrGUIDKeys) Then
                For Each GUIDKey In arrGUIDKeys
                    objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) & "\" & GUIDKey, SEARCH_KEY, arrDPIDBytes

                    If Not IsNull(arrDPIDBytes) Then
                        Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
                    End If
                Next
            End If
        End If
    Next

End Function


    Public Function decodeKey(iValues, strProduct)

        Dim arrDPID
        arrDPID = Array()

            For i = 52 to 66
                ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
                arrDPID( UBound(arrDPID) ) = iValues(i)
            Next

        Dim arrChars
        arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")

            For i = 24 To 0 Step -1
                k = 0
        
                For j = 14 To 0 Step -1
                    k = k * 256 Xor arrDPID(j)
                    arrDPID(j) = Int(k / 24)
                    k = k Mod 24
                Next
        
                strProductKey = arrChars(k) & strProductKey
        
                If i Mod 5 = 0 And i <> 0 Then
                    strProductKey = "-" & strProductKey
                End If
            Next
    
        ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
        foundKeys( UBound(foundKeys) ) = strProductKey
        strKey = UBound(foundKeys)
        Wscript.Echo "     " & strProduct & "" & foundKeys(strKey)
    End Function


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Subroutine: PressEnter()
'//
'// Adds a pause with a "Press the ENTER key to continue." message when called.
'//
'// Usage:  Call this Subroutine to get a pause that will clear when the user presses the
'// ENTER key (and ONLY the ENTER key) on their keyboard:

Sub PressEnter()
    Wscript.Echo ""
    strMessage = "Press the ENTER key to continue. "
    Wscript.StdOut.Write strMessage

    Do While Not WScript.StdIn.AtEndOfLine
        Input = WScript.StdIn.Read(1)
    Loop
End Sub


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Subroutine: ElevateThisScript()
'//
'// Forces the currently running script to prompt for elevation if it detects that the
'// current user credentials do not have administrative privileges.
'//
'// If run on Windows XP / Server 2003 this script will cause the RunAs dialog to appear
'// if the user does not have administrative rights, giving the opportunity to run as an
'// administrator.
'//
'// If run on Windows Vista / Server 2008 this script will cause a UAC dialog to appear
'// if the user does not have administrative rights and UAC is enabled, giving the
'// opportunity for the script to run properly for a LUA user.
'//
'// This Sub Attempts to call the script with its original arguments.  Arguments that
'// contain a space will be wrapped in double quotes when the script calls itself again.
'//
'// Usage:  Add a call to this sub (ElevateThisScript) to the beginning of your script to
'// ensure that the script gets an administrative token.

Sub ElevateThisScript()

    Const HKEY_CLASSES_ROOT  = &H80000000
    Const HKEY_CURRENT_USER  = &H80000001
    Const HKEY_LOCAL_MACHINE = &H80000002
    Const HKEY_USERS         = &H80000003
    const KEY_QUERY_VALUE     = 1
    Const KEY_SET_VALUE       = 2

    Dim scriptEngine, engineFolder, argString, arg, Args, scriptCommand
    Dim objShellApp : Set objShellApp = CreateObject("Shell.Application")

    scriptEngine = Ucase(Mid(Wscript.FullName,InstrRev(Wscript.FullName,"\")+1))
    engineFolder = Left(Wscript.FullName,InstrRev(Wscript.FullName,"\"))
    argString = ""

    Set Args = Wscript.Arguments

    For each arg in Args                        'loop though argument array as a collection to rebuild argument string
        If instr(arg," ") > 0 Then arg = """" & arg & """"  'if the argument contains a space wrap it in double quotes
        argString = argString & " " & Arg
    Next

    scriptCommand = engineFolder & scriptEngine

    Dim strComputer : strComputer = "."

    Dim objReg, bHasAccessRight
    Set objReg=GetObject("winmgmts:"_
        & "{impersonationLevel=impersonate}!\\" &_
        strComputer & "\root\default:StdRegProv")

    'Check for administrative registry access rights
    objReg.CheckAccess HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Control\CrashControl", _
        KEY_SET_VALUE, bHasAccessRight

    If bHasAccessRight = True Then

        HasRequiredRegAccess = True
        Exit Sub

    Else

        HasRequiredRegAccess = False
        objShellApp.ShellExecute scriptCommand, " """ & Wscript.ScriptFullName & """" & argString, "", "runas"
        WScript.Quit
    End If
End Sub
'//z 2012-5-20 14:44:28 PM IS2120@CSDNIS2120@CSDN.BG57IV3

转载于:https://www.cnblogs.com/IS2120/archive/2012/05/20/6745890.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值