通过Visual Basic拉出硬件序列号?

时间:2014-02-01 20:42:26

标签: vb.net visual-studio-2010 vba vb6 hardware

我正在Visual Basic中编写一个应用程序,它提取有关计算机的基本信息并将数据输出到表单上。目前,我正在尝试拉出我将要使用的机器的序列号。例如,从BIOS中提取笔记本电脑的序列号。我已经浏览了互联网并且没有真正找到如何在不使用WMI或C的情况下在Visual Basic中执行此操作。有没有办法在Visual Basic中执行此操作?

以下是我目前在表格中的内容,因此您可以了解我想要做的事情:

        TextBoxComputerName.Text = Environment.MachineName
        TextBoxOSVersion.Text = System.Environment.OSVersion.ToString
        TextBoxOSFullName.Text = My.Computer.Info.OSFullName
        TextBoxCurrentUser.Text = System.Environment.UserName
        TextBox64Bit.Text = System.Environment.Is64BitOperatingSystem
        TextBoxSystemDirectory.Text = System.Environment.SystemDirectory
        TextBoxDomain.Text = System.Environment.UserDomainName
        ' CHECK SERIAL NUMBER HERE.

非常感谢你们!

5 个答案:

答案 0 :(得分:5)

这对你很有用!首先添加对System.Management的引用,然后确保将其导入到类的顶部。我在表单加载事件中执行了此操作,但您可以将其放在任何位置......

  Imports System.Management

  Dim q As New SelectQuery("Win32_bios")
  Dim search As New ManagementObjectSearcher(q)
  Dim info As New ManagementObject

  For Each info In search.Get
    MessageBox.Show("Serial Number: " & info("serialnumber").ToString & vbNewLine & vbNewLine & "Bios Version: " & info("version").ToString)
  Next

如果你愿意,你可以先声明一个字符串,然后将其设置为:info(“serialnumber”)。ToString和你的设置txtSerial.Text =你声明的字符串

这是我得到的......

My outcome

答案 1 :(得分:1)

这是VBScript,但应该可以进入VB6。

你知道很多电脑上的这个字段都是空白的吗?

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

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

For Each objItem in colItems
    msgbox objItem.SerialNumber
Next

从命令提示符(但我不认为家庭版本获得控制台程序wmic)

wmic bios get /format:list

wmic bios get serialnumber /format:list

答案 2 :(得分:1)

尝试使用Treek的Licecnsing Library。它有生成硬件序列的类。

http://msdn.treekslicensinglibrary.com/html/f2bfa10c-d5d9-25ac-39c2-46e2393c0fbe.htm

答案 3 :(得分:0)

我找到了一种使用FileSystemObject在VBA中向后退的方法。您将需要设置对Windows脚本运行时的引用。

Option Explicit

Public Sub GetHDSerial()

    Dim objFSO          As FileSystemObject
    Dim objFolder       As Folder

    Dim strComputer     As String

    strComputer = "myComputer"
    Set objFSO = New FileSystemObject
    Set objFolder = objFSO.GetFolder("\\" & strComputer & "\c$")
    Debug.Print Hex(objFolder.Drive.SerialNumber)

    Set objFSO = Nothing
    Set objFolder = Nothing

End Sub

这不考虑多个物理驱动器,这在我的环境中不是问题。

答案 4 :(得分:0)

这是一个将返回的类: *) 计算机名称 *) 程序集名称 *) 登录用户名 *) 序列号

导入 System.Management

''' ''' 提供方法和属性来检索并提供给 ''' 应用: ''' *) 计算机名称 ''' *) 程序集名称 ''' *) 登录用户名 ''' *) 电脑序列号 '''
''' 公共类 clsGetComputerInformation Private ReadOnly mstrClsTitle As String = "clsGetComputerInformation"

Public ReadOnly Property pstrComputerName() As String
    Get
        Return Environment.MachineName
    End Get
End Property

Public ReadOnly Property pstrUserName() As String
    Get
        Return System.Security.Principal.WindowsIdentity.GetCurrent.Name
    End Get
End Property

Public ReadOnly Property pstrAssemblyName() As String
    Get
        Return My.Application.Info.AssemblyName
    End Get
End Property


Public Function pstrSystemSerialNumber() As String
    Dim query As New SelectQuery("Win32_bios")
    Dim search As New ManagementObjectSearcher(query)
    Dim info As ManagementObject
    Dim lstrSerialNo As String = ""

    For Each info In search.Get()
        lstrSerialNo = info("SerialNumber").ToString()
    Next
    Return lstrSerialNo
End Function

结束课程