1

我正在尝试使用 vb.net 获取硬件制造商(例如“Dell”)和型号(例如“Latitude E6320”),但我没有运气。

我试过了

Dim opSearch As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
Dim opInfo As ManagementObject
For Each opInfo In opSearch.Get()
    Return opInfo("manufacturer").ToString()
Next

虽然这会返回“Microsoft Corporation”而不是“Dell”。

4

2 回答 2

3

您正在轮询错误的 WMI 类/配置单元。微软当然是操作系统制造商;你需要的是Win32_ComputerSystem

Imports System.Management


cs = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")

For Each objMgmt In cs.Get
   _Manufacturer = objMgmt("manufacturer").ToString()
   _Model = objMgmt("model").ToString()
   _SystemType = objMgmt("systemtype").ToString
   _totalMem = objMgmt("totalphysicalmemory").ToString()
Next

制造商将类似于“Dell, Inc”,模型与我的一致,但已知有时包含内部子模型标识符。我的系统类型返回为“基于 x64 的 PC”。

MS 在某处有一个 WMI 查询生成器来帮助查找和使用正确的查询,尽管它会生成非常冗长的代码。

于 2014-04-01T23:59:00.630 回答
1

在控制台应用程序中尝试一下。请记住将 System.Management 引用添加到您的项目中。您需要访问 Win32_ComputerSystem 而不是 Win32_OperatingSystem。

Sub Main()
    Dim objCS As Management.ManagementObjectSearcher
    Dim manufacturerName As String

    'objOS = New Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
    objCS = New Management.ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")

    For Each objMgmt In objCS.Get
        manufacturerName = objMgmt("manufacturer").ToString()
    Next
    Debug.WriteLine("Manufacturer: " & manufacturerName)
End Sub

希望能帮助到你。

于 2014-04-01T23:58:39.507 回答