我正在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.
非常感谢你们!
答案 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 =你声明的字符串
这是我得到的......
答案 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
结束课程