天天看點

VBScript 之 系統 API 篇

option Explicit

Class APIHelper

    ' 定義資料庫讀取類執行個體

    Dim sqHelper

    ' ***************************************************************************

    ' 從計算機 API 中,擷取計算機的序列号

    Function ReadComputerSerialNumber()

        Dim objWMIService, colItems, objItem

        Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

        Set colItems = objWMIService.ExecQuery ("Select * from Win32_BIOS")

        ' 傳回計算機序列号

        For Each objItem In colItems

            ReadComputerSerialNumber = Trim(objItem.SerialNumber)

        Next

    End Function

    ' 從計算機 API 中,擷取計算機的 MAC 位址

    Function ReadMacAddress()

        ReadMacAddress = ""

        Dim objWMIService,objNetworkAdapters,objAdapter

        Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

        Set objNetworkAdapters = objWMIService.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled = 1")

        For Each objAdapter In objNetworkAdapters

            ShowMessage objAdapter.MacAddress,0

            ' Get the MAC address

            ReadMacAddress = objAdapter.MacAddress

        Next 

    ' 從計算機系統 API 中,讀取計算機的磁盤數量。

    Function ReadComputerDiskPartitions()

        Dim objWMIService, wmiDiskDrives, wmiDiskDrive, objPartition

        Set wmiDiskDrives = objWMIService.ExecQuery ("Select * from Win32_DiskDrive")

        Dim diskPartitions, dicPartition, diskArray, diskPartitionsByQuery

        Set diskArray = CreateObject("Scripting.Dictionary")

        ' 逐個磁盤驅動器讀取

        For Each wmiDiskDrive In wmiDiskDrives

            Select Case wmiDiskDrive.MediaType

                ' 如果是固态硬碟媒體

                Case "Fixed hard disk media"

                    SET diskPartitions = CreateObject("Scripting.Dictionary")

                    diskPartitions.CompareMode = TextCompare

                    ' 輸出磁盤編号 0 及磁盤大小

                    diskPartitions("DiskID") = wmiDiskDrive.Index

                    diskPartitions("DiskSize") = wmiDiskDrive.Size ' 機關 MB

                    Set diskPartitions("DiskPartitions") = CreateObject("Scripting.Dictionary")

                    ' 輸出指定磁盤的分區清單

                    Set diskPartitionsByQuery = objWMIService.ExecQuery("Select * from Win32_DiskPartition WHERE DiskIndex = " & wmiDiskDrive.Index)

                    For each objPartition in diskPartitionsByQuery

                        SET dicPartition = CreateObject("Scripting.Dictionary")

                        dicPartition.CompareMode = TextCompare

                        dicPartition("PartitionID") = objPartition.Index

                        dicPartition("PartitionSize") = objPartition.Size

                        diskPartitions("DiskPartitions").Add dicPartition("PartitionID"),dicPartition

                    Next

                    diskArray.Add diskPartitions("DiskID"),diskPartitions

            End Select

        Next

        Set ReadComputerDiskPartitions = diskArray

End Class

繼續閱讀