读取本机硬件信息的VBA代码

该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!

陈希章

原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/06/02/1494812.html
原文标题:读取本机硬件信息的VBA代码
原文发表:2009/6/2 11:32:00

今天被朋友问到,如何在VB或者VBA代码中读取诸如硬盘或者CPU等硬件设备的序列号这一类信息。我写了一个范例如下

1. 在我的机器上运行的效果。我这个例子读取了四部分信息(CPU,物理硬盘,逻辑磁盘,网卡)

image

2.代码如下。代码的原理是使用WMI接口。需要管理员权限才能执行该代码

Private Type OSVERSIONINFO
                  dwOSVersionInfoSize   As Long
                  dwMajorVersion   As Long
                  dwMinorVersion   As Long
                  dwBuildNumber   As Long
                  dwPlatformId   As Long
                  szCSDVersion   As String * 128                   '     Maintenance   string   for   PSS   usage
  End Type
  Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
  Private Const VER_PLATFORM_WIN32_NT = 2
  Private Const VER_PLATFORM_WIN32_WINDOWS = 1
  Private Const VER_PLATFORM_WIN32s = 0
'''这个范例程序是读取CPU,物理硬盘,逻辑磁盘,和网卡的有关序列号的
'''作者:陈希章
'''时间:2009年6月2日
Sub Test()
         Dim len5     As Long, aa       As Long
          Dim cmprName     As String
          Dim osver     As OSVERSIONINFO
          '取得Computer   Name
          cmprName = String(255, 0)
          len5 = 256
          aa = GetComputerName(cmprName, len5)
          cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)
          Computer = cmprName                     '取得CPU端口号
            ActiveCell.Worksheet.Cells.Clear
            Dim rng As Range
            Set rng = Range("B7")
            rng.Font.Bold = True
            rng.Value = "CPU"
            Set rng = rng.Offset(1)
          Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer & "/root/cimv2").ExecQuery("select   *   from   Win32_Processor")
          For Each mycpu In CPUs
              rng.Value = mycpu.processorid
              Set rng = rng.Offset(1)
          Next

            rng.Value = "Hard Disk"
            rng.Offset(, 1).Value = "Media Type"
            rng.Resize(, 2).Font.Bold = True
            Set rng = rng.Offset(1)

            Set disks = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer & "/root/cimv2").ExecQuery("select   *   from   Win32_DiskDrive")
            For Each disk In disks
            rng.Value = disk.pnpdeviceid
            rng.Offset(, 1).Value = disk.mediatype
            Set rng = rng.Offset(1)
            Next
            Set hds = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer & "/root/cimv2").ExecQuery("select   *   from  Win32_LogicalDisk")
            rng.Value = "Logic Disk Caption"
            rng.Offset(, 1).Value = "VolumeSerialNumber"
            rng.Resize(, 2).Font.Bold = True
            Set rng = rng.Offset(1)
            For Each hd In hds
            rng.Value = hd.Caption
            rng.Offset(, 1).Value = hd.VolumeSerialNumber
            Set rng = rng.Offset(1)
            Next
            Set networks = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer & "/root/cimv2").ExecQuery("select   *   from  Win32_NetworkAdapter")
            rng.Value = "Caption"
            rng.Offset(, 1).Value = "MAC Address"
            rng.Offset(, 2).Value = "PNPDeviceID"

            rng.Resize(, 3).Font.Bold = True
            Set rng = rng.Offset(1)
            For Each network In networks
                rng.Value = network.Caption
                rng.Offset(, 1).Value = network.macaddress
                rng.Offset(, 2).Value = network.pnpdeviceid
                Set rng = rng.Offset(1)
            Next
End Sub

作者:陈希章
出处:http://blog.csdn.net/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值