您的位置:首页 > 理论基础

[转载]获得计算机硬件信息(VB.net)

2008-01-13 21:30 561 查看
[转载]获得计算机硬件信息(VB.net)

Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Private IsBaseFirst As Boolean = True
Private IsHardFirst As Boolean = True
Private IsCPUFirst As Boolean = True
Private IsROMFirst As Boolean = True
Private IsAuidoFirst As Boolean = True
Private IsVidoFirst As Boolean = True
Private IsMACFirst As Boolean = True
Private IsSoftwareFirst As Boolean = True
Private IsLoad As Boolean

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
IsLoad = True
StatusBar1.Panels(0).Text = "就绪."
Dim objectQuery As New ObjectQuery("select * from Win32_Share")
Dim searcher As New ManagementObjectSearcher(objectQuery)
Dim share As ManagementObject
For Each share In searcher.Get()
Console.WriteLine("Share = " & share("Name"))
Next share

End Sub

Private Sub TableControl_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TableControl.SelectedIndexChanged
Me.Cursor = Cursors.WaitCursor
If IsLoad Then StatusBar1.Panels(0).Text = "正在搜索信息,请稍候..."
Select Case TableControl.SelectedIndex
Case 0
If IsBaseFirst Then BaseInfo()
Case 1
If IsHardFirst Then HardInfo()
Case 2
If IsCPUFirst Then CPUinfo()
Case 3
If IsROMFirst Then ROMinfo()
Case 4
If IsAuidoFirst Then AuidoInfo()
Case 5
If IsVidoFirst Then VidoInfo()
Case 6
If IsMACFirst Then MACinfo()
Case 7
If IsSoftwareFirst Then FontInfo()
End Select

Me.Cursor = Cursors.Default
If IsLoad Then StatusBar1.Panels(0).Text = "就绪."

End Sub

'测试硬盘读写速度
Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem6.Click
Dim testString As String = String.Empty
If MessageBox.Show("整个测试过程需要几分钟,你确定要测试吗?", "测试", _
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then
Me.Cursor = Cursors.WaitCursor
Dim I As Int32
Dim f As New FileStream("E:/BigFile.big", FileMode.Create)
Dim fw As New BinaryWriter(f)
Dim fr As New BinaryReader(f)
Dim Size As Int32 = 1024 * 1024 * 1024 - 1 'File size = 1GB
Dim bufSize As Int32 = 30 * 1024 * 1024 'Buffer Size = 30MB
Dim jLast As Int32 = bufSize - 1
Dim Bytes(bufSize) As Byte
Dim StartWrite As Date = Date.Now

StatusBar1.Panels(0).Text = "开始写数据测试时间:" & StartWrite
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "正在进行写数据测试,请稍候..."
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine

For I = 0 To Size Step bufSize '1GB
fw.Write(Bytes)
Next

Dim EndWrite As Date = Date.Now
Dim TimePassed As TimeSpan = EndWrite.Subtract(StartWrite)
StatusBar1.Panels(0).Text = "结束写数据测试时间:" & EndWrite
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "写数据测试用时:" & Format(TimePassed.ToString, "h:m:s")
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "硬盘写数据速度为:" & CInt(1000 / TimePassed.TotalSeconds) & "M/s"
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
fw.Flush()
Dim StartRead As Date = Date.Now
StatusBar1.Panels(0).Text = "开始读数据测试时间:" & StartRead
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "正在进行读数据测试,请稍候..."
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine

For I = 0 To Size Step bufSize
Bytes = fr.ReadBytes(bufSize)
Next

Dim EndRead As Date = Date.Now
TimePassed = EndRead.Subtract(StartRead)

StatusBar1.Panels(0).Text = "结束读数据测试时间:" & EndRead
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "读数据测试用时:" & Format(TimePassed.ToString, "hh:ss:mm")
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
StatusBar1.Panels(0).Text = "硬盘读数据速度为:" & CInt(1000 / TimePassed.TotalSeconds) & "M/s"
testString = testString & StatusBar1.Panels(0).Text & Environment.NewLine
fw.Close()
Me.Cursor = Cursors.Default
If MessageBox.Show(testString & Environment.NewLine & Environment.NewLine & _
"测试已经完成,是否保存测试记录?", "测试完成", _
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then

End If
End If
End Sub

#Region "dfd"
Function processorfamily(ByVal procssfam As String) As String
Dim processtype As String = String.Empty
Select Case procssfam
Case 1
processtype = "Other"
Case 2
processtype = "Unknown "
Case 3
processtype = "8086 "
Case 4
processtype = "80286 "
Case 5
processtype = "80386 "
Case 6
processtype = "80486 "
Case 7
processtype = "8087 "
Case 8
processtype = "80287 "
Case 9
processtype = "80387 "
Case 10
processtype = "80487 "
Case 11
processtype = "Pentium brand "
Case 12
processtype = "Pentium Pro "
Case 13
processtype = "Pentium II "
Case 14
processtype = "Pentium processor with MMX technology "
Case 15
processtype = "Celeron "
Case 16
processtype = "Pentium II Xeon "
Case 17
processtype = "Pentium III "
Case 18
processtype = "M1 Family "
Case 19
processtype = "M2 Family "
Case 24
processtype = "K5 Family "
Case 25
processtype = "K6 Family "
Case 26
processtype = "K6-2 "
Case 27
processtype = "K6-3 "
Case 28
processtype = "AMD Athlon Processor Family "
Case 29
processtype = "AMD Duron Processor "
Case 30
processtype = "AMD2900 Family "
Case 31
processtype = "K6-2+ "
Case 32
processtype = "Power PC Family "
Case 33
processtype = "Power PC 601 "
Case 34
processtype = "Power PC 603 "
Case 35
processtype = "Power PC 603+ "
Case 36
processtype = "Power PC 604 "
Case 37
processtype = "Power PC 620 "
Case 38
processtype = "Power PC X704 "
Case 39
processtype = "Power PC 750 "
Case 48
processtype = "Alpha Family "
Case 49
processtype = "Alpha 21064 "
Case 50
processtype = "Alpha 21066 "
Case 51
processtype = "Alpha 21164 "
Case 52
processtype = "Alpha 21164PC "
Case 53
processtype = "Alpha 21164a "
Case 54
processtype = "Alpha 21264 "
Case 55
processtype = "Alpha 21364 "
Case 64
processtype = "MIPS Family "
Case 65
processtype = "MIPS R4000 "
Case 66
processtype = "MIPS R4200 "
Case 67
processtype = "MIPS R4400 "
Case 68
processtype = "MIPS R4600 "
Case 69
processtype = "MIPS R10000 "
Case 80
processtype = "SPARC Family "
Case 81
processtype = "SuperSPARC "
Case 82
processtype = "microSPARC II "
Case 83
processtype = "microSPARC IIep "
Case 84
processtype = "UltraSPARC "
Case 85
processtype = "UltraSPARC II "
Case 86
processtype = "UltraSPARC IIi "
Case 87
processtype = "UltraSPARC III "
Case 88
processtype = "UltraSPARC IIIi "
Case 96
processtype = "68040 "
Case 97
processtype = "68xxx Family "
Case 98
processtype = "68000 "
Case 99
processtype = "68010 "
Case 100
processtype = "68020 "
Case 101
processtype = "68030 "
Case 112
processtype = "Hobbit Family "
Case 120
processtype = "Crusoe TM5000 Family "
Case 121
processtype = "Crusoe TM3000 Family "
Case 128
processtype = "Weitek "
Case 130
processtype = "Itanium Processor "
Case 144
processtype = "PA-RISC Family "
Case 145
processtype = "PA-RISC 8500 "
Case 146
processtype = "PA-RISC 8000 "
Case 147
processtype = "PA-RISC 7300LC "
Case 148
processtype = "PA-RISC 7200 "
Case 149
processtype = "PA-RISC 7100LC "
Case 150
processtype = "PA-RISC 7100 "
Case 160
processtype = "V30 Family "
Case 176
processtype = "Pentium III Xeon "
Case 177
processtype = "Pentium III Processor with Intel SpeedStep Technology "
Case 178
processtype = "Pentium 4 "
Case 179
processtype = "Intel Xeon "
Case 180
processtype = "AS400 Family "
Case 181
processtype = "Intel Xeon processor MP "
Case 182
processtype = "AMD AthlonXP Family "
Case 183
processtype = "AMD AthlonMP Family "
Case 184
processtype = "Intel Itanium 2 "
Case 185
processtype = "AMD Opteron Family "
Case 190
processtype = "K7 "
Case 200
processtype = "IBM390 Family "
Case 201
processtype = "G4 "
Case 202
processtype = "G5 "
Case 250
processtype = "i860 "
Case 251
processtype = "i960 "
Case 260
processtype = "SH-3 "
Case 261
processtype = "SH-4 "
Case 280
processtype = "ARM "
Case 281
processtype = "StrongARM "
Case 300
processtype = "6x86 "
Case 301
processtype = "MediaGX "
Case 302
processtype = "MII "
Case 320
processtype = "WinChip "
Case 350
processtype = "DSP "
Case 500
processtype = "Video Processor "
End Select
Return processtype

End Function
Function CpuStat(ByVal CpuStNUM As String) As String
Dim stat As String
Select Case CpuStNUM
Case 0
stat = "Unknown "
Case 1
stat = "CPU Enabled "
Case 2
stat = "CPU Disabled by User via BIOS Setup "
Case 3
stat = "CPU Disabled By BIOS (POST Error) "
Case 4
stat = "CPU is Idle "
Case 5
stat = "Reserved "
Case 6
stat = "Reserved "
Case 7
stat = "Other "
Case Else
stat = ""
End Select

Return stat
End Function

Function processortype(ByVal proctypenum As String) As String
Dim proctype As String = String.Empty
Select Case proctypenum
Case 1
proctype = "Other "
Case 2
proctype = "Unknown "
Case 3
proctype = "Central Processor "
Case 4
proctype = "Math Processor "
Case 5
proctype = "DSP Processor "
Case 6
proctype = "Video Processor "
End Select
Return proctype
End Function
#End Region

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
'打开CD-ROM
Dim lRet As Long
lRet = mciSendString("set cdAudio door open", 0&, 0, 0)
End Sub

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
'关闭CD-ROM
Dim lRet As Long
lRet = mciSendString("set cdAudio door Closed", 0&, 0, 0)
End Sub

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
' Win32_NetworkAdapterConfiguration()
End Sub

'基本信息
Private Sub BaseInfo()
IsBaseFirst = False
lsvSystemInfo.Items.Clear()

'得到特殊文件夹的路径
'"Desktop"桌面文件夹路径
lsvSystemInfo.Items.Add("Desktop桌面文件夹路径:" & (Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)))
'"Favorites"收藏夹路径
lsvSystemInfo.Items.Add("Favorites收藏夹路径:" & (Environment.GetFolderPath(Environment.SpecialFolder.Favorites)))
'"Application Data"路径
lsvSystemInfo.Items.Add("Application Data路径:" & (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)))

'通用写法
'Dim SPEC As String = Environment.GetFolderPath(Environment.SpecialFolder.XXXXXXX)
'XXXXXXX是特殊文件夹的名字

'得到操作系统版本信息
lsvSystemInfo.Items.Add("操作系统版本信息:" & (Environment.OSVersion.ToString))

'得到当前登录的用户名
lsvSystemInfo.Items.Add("前登录的用户名:" & (Environment.UserName))

'得到当前应用程序的路径
lsvSystemInfo.Items.Add("当前应用程序的路径:" & (Environment.CurrentDirectory))

'得到计算机IP和计算机全名
Dim MYIP As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName)
lsvSystemInfo.Items.Add("您的IP地址:" & (MYIP.AddressList.GetValue(0).ToString))
lsvSystemInfo.Items.Add("您的计算机全名:" & (MYIP.HostName.ToString))

'-----------------------------------------------------

'使用win32_operatingSystem (wmi Class)得到计算机信息
Dim opSearch As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
Dim opInfo As ManagementObject
For Each opInfo In opSearch.Get()
With lsvSystemInfo.Items
.Add("Name: " & opInfo("name").ToString())
.Add("Version: " & opInfo("version").ToString())
.Add("Manufacturer: " & opInfo("manufacturer").ToString())
.Add("Computer name: " & opInfo("csname").ToString())
.Add("Windows Directory: " & opInfo("windowsdirectory").ToString())
End With
Next

End Sub
Private Sub MACinfo()
IsMACFirst = False
lsvMAC.Items.Clear()
'网卡的MAC
Dim mc As System.Management.ManagementClass = New System.Management.ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As System.Management.ManagementObject
For Each mo In moc
If CBool(mo("IPEnabled")) = True Then
lsvMAC.Items.Add(mo("MacAddress").ToString()) '//---网卡MAC地址
lsvMAC.Items.Add(mo("IPAddress")(0).ToString()) '//---网卡IP地址
End If
Next

End Sub

'得到硬盘信息
Private Sub HardInfo()
IsHardFirst = False
''获得硬盘序列号
Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
Dim Uint32 As UInt32
For Each cmicWmiObj As ManagementObject In cmicWmi.Get
Uint32 = cmicWmiObj("signature")
Next
ListBox5.Items.Add("硬盘序列号:" & Uint32.ToString)

''获得硬盘总容量
Dim Wmi1 As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
Dim Uint64 As UInt64
For Each WmiObj As ManagementObject In Wmi1.Get
Uint64 = WmiObj("size")
Next
ListBox5.Items.Add("硬盘总容量:" & Uint64.ToString / 1000000000 & "G")

On Error Resume Next
Dim HDDDeviceQuery As New SelectQuery("Win32_DiskDrive")
Dim HDDDeviceSearch As New ManagementObjectSearcher(HDDDeviceQuery)
Dim HDDDeviceInfo As ManagementObject
For Each HDDDeviceInfo In HDDDeviceSearch.Get()
With ListBox5.Items
.Add("HDD Description: " & HDDDeviceInfo("caption").ToString())
.Add("HDD BytesPerSector: " & HDDDeviceInfo("BytesPerSector").ToString())
.Add("HDD CompressionMethod: " & HDDDeviceInfo("CompressionMethod").ToString())
.Add("HDD Index: " & HDDDeviceInfo("Index").ToString())
.Add("HDD InstallDate: " & HDDDeviceInfo("InstallDate").ToString())
.Add("HDD Manufacturer: " & HDDDeviceInfo("Manufacturer").ToString())
.Add("HDD Partitions: " & HDDDeviceInfo("Partitions").ToString())
.Add("HDD Size: " & Int(Val(HDDDeviceInfo("Size").ToString()) / 2 ^ 30) & " GBytes")
.Add("HDD TotalCylinders: " & HDDDeviceInfo("TotalCylinders").ToString())
.Add("HDD TotalSectors: " & HDDDeviceInfo("TotalSectors").ToString())
.Add("HDD TracksPerCylinder: " & HDDDeviceInfo("TracksPerCylinder").ToString())
.Add("HDD TotalHeads: " & HDDDeviceInfo("TotalHeads").ToString())
.Add("HDD TotalTracks: " & HDDDeviceInfo("TotalTracks").ToString())
.Add("HDD SectorsPerTrack: " & HDDDeviceInfo("SectorsPerTrack").ToString())
.Add("HDD SCSILogicalUnit: " & HDDDeviceInfo("SCSILogicalUnit").ToString())
End With
Next

'-------------------------------
'获取硬盘信息
Dim disk As ManagementBaseObject
Dim strResult As String
Dim diskClass As ManagementClass = New ManagementClass("Win32_LogicalDisk")
Dim disks As ManagementObjectCollection
disks = diskClass.GetInstances()

For Each disk In disks
strResult = ""
strResult += "设备ID:" & disk("DeviceID") & vbCrLf
strResult += "磁盘名称:" & disk("Name") & vbCrLf
strResult += "磁盘卷标:" & disk("VolumeName") & vbCrLf
If disk("FileSystem") <> "" Then strResult += "文件系统:" & disk("FileSystem") & vbCrLf
strResult += "磁盘描述:" & disk("Description") & vbCrLf
If System.Convert.ToInt64(disk("Size")) > 0 Then
strResult += "磁盘大小:" & System.Convert.ToInt64(disk("Size").ToString()) & vbCrLf
strResult += "磁盘类型:" & System.Convert.ToInt16(disk("DriveType").ToString())
End If
lsvHardInfo.Items.Add(strResult)
Next
End Sub

'使用Win32_Processor列出处理器的信息
Private Sub CPUinfo()
IsCPUFirst = False
''获得CPU序列号
Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor")
Dim Uint33 As String = String.Empty
For Each WmiObj As ManagementObject In Wmi.Get
Uint33 = WmiObj("ProcessorId")
Next
ListBox3.Items.Add("CPU序列号:" & Uint33)

Dim ProcQuery As New SelectQuery("Win32_Processor")
Dim ProcSearch As New ManagementObjectSearcher(ProcQuery)
Dim ProcInfo As ManagementObject

For Each ProcInfo In ProcSearch.Get()
lsvSystemInfo.Items.Add("Family: " & processorfamily(ProcInfo("Family").ToString))

lsvSystemInfo.Items.Add("Processor Type: " & _
processortype(ProcInfo("ProcessorType").ToString()))

lsvSystemInfo.Items.Add("CpuStatus: " & CpuStat(ProcInfo("CpuStatus").ToString))

With ListBox3.Items
.Add("Description: " & ProcInfo("Description").ToString())
.Add("caption: " & ProcInfo("caption").ToString())
.Add("Architecture: " & ProcInfo("Architecture").ToString())
.Add("MaxClockSpeed: " & ProcInfo("MaxClockSpeed").ToString() & "MHZ")
'.Add("L2CacheSpeed: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")
'.Add("ExtClock: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")
.Add("ProcessorId: " & ProcInfo("ProcessorId").ToString())
.Add("AddressWidth: " & ProcInfo("AddressWidth").ToString() & "Bits")
.Add("DataWidth: " & ProcInfo("DataWidth").ToString() & "Bits")
.Add("Version: " & ProcInfo("Version").ToString())
.Add("ExtClock: " & ProcInfo("ExtClock").ToString() & "MHZ")
End With
Next
End Sub

'显卡信息
Private Sub VidoInfo()
IsVidoFirst = False
'得到显示器分辨率
Dim X As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
Dim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
lsvVidoInfo.Items.Add("显示器分辨率:" & X & " X " & Y)
End Sub

'得到声卡信息
Private Sub AuidoInfo()
IsAuidoFirst = False
Dim SoundDeviceQuery As New SelectQuery("Win32_SoundDevice")
Dim SoundDeviceSearch As New ManagementObjectSearcher(SoundDeviceQuery)
Dim SoundDeviceInfo As ManagementObject
For Each SoundDeviceInfo In SoundDeviceSearch.Get()
With ListBox6.Items
.Add("Sound Device Description: " & SoundDeviceInfo("Caption").ToString())
.Add("Sound Device Status: " & SoundDeviceInfo("status").ToString())
.Add("Sound Device Manufacturer: " & SoundDeviceInfo("Manufacturer").ToString())
End With
Next
End Sub

Private Sub FontInfo()
IsSoftwareFirst = False
' 计算机安装的全部字体
Dim fntCollection As InstalledFontCollection = New InstalledFontCollection
Dim fntFamily() As FontFamily
fntFamily = fntCollection.Families
'ListBox1.Items.Clear()
Dim i As Integer = 0
For i = 0 To fntFamily.Length - 1
ListBox2.Items.Add(fntFamily(i).Name)
Next

'列出所有进程
With lsvProcess
.Clear()
.Columns.Add("进程名:", 115, HorizontalAlignment.Left)
.Columns.Add("路径:", 270, HorizontalAlignment.Left)
End With
Dim tempStr As String
Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Process")
For Each cmicWmiObj As ManagementObject In cmicWmi.Get
Dim lsv As New ListViewItem
tempStr = cmicWmiObj("Name")
lsv = lsvProcess.Items.Add(New ListViewItem(tempStr))
tempStr = cmicWmiObj("ExecutablePath")
lsv.SubItems.Add(tempStr)
Next
End Sub

'得到CD-ROM信息
Private Sub ROMinfo()
IsROMFirst = False
On Error Resume Next
Dim CRDeviceQuery As New SelectQuery("Win32_CDROMDrive")
Dim CRDeviceSearch As New ManagementObjectSearcher(CRDeviceQuery)
Dim CRDeviceInfo As ManagementObject
For Each CRDeviceInfo In CRDeviceSearch.Get()
Dim SizeInMBs As Long = (Val(CRDeviceInfo("Size").ToString()))
SizeInMBs = Int((SizeInMBs / (1024 * 1024)))
With ListBox4.Items
.Add("CD-Rom Description: " & CRDeviceInfo("caption").ToString())
.Add("CD-Rom Manufacturer: " & CRDeviceInfo("Manufacturer").ToString())
.Add("CD-Rom Drive: " & CRDeviceInfo("drive").ToString())
.Add("CD-Rom Media Loaded: " & CRDeviceInfo("MediaLoaded").ToString())
.Add("CD-Rom Media Type: " & CRDeviceInfo("MediaType").ToString())
.Add("CD-Rom Volume Name: " & CRDeviceInfo("VolumeName").ToString())
.Add("CD-Rom Size: " & SizeInMBs & " MBytes")
.Add("CD-Rom Status: " & CRDeviceInfo("Status").ToString())
.Add("CD-Rom MaxMediaSize: " & CRDeviceInfo("MaxMediaSize").ToString())
.Add("CD-Rom Id: " & CRDeviceInfo("Id").ToString())
.Add("CD-Rom TransferRate: " + Int(CRDeviceInfo("TransferRate").ToString()) + " KBs/秒")
End With
Next
End Sub

End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: