1. 程式人生 > >C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)

C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)

mic class network pcm .cn bbb alt OS -h

原文:C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)

在開發過程中,經常需要獲取電腦的一些屬性,如獲取硬盤ID/CPU序列號/MAC地址作為來加密字符串。

1、硬盤

在我查看網上一些文檔時,發現很多人對硬盤序列號很模糊~

什麽叫硬盤序列號?指的是作為一個硬盤的標識;但是有時候發現,同事的電腦硬盤序列號有重復的。所以硬盤標識我們可以試試用ID,這個如何獲取下面講解。

技術分享圖片技術分享圖片

我們可以運行DOS命令,或者查看註冊表,查看硬盤的序列號。如圖中所示:都是HGST HTS725050A7E630。

大部分情況下,大家都可以通過如下獲取:

        Dim key As
RegistryKey = Registry.LocalMachine Dim subKey = key.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0") Dim bbb = subKey.GetValue("Identifier")

也可以通過Wmi方式獲取:

        Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive
") Dim diskId As String 數字ID Dim diskSerialNumber As String 這個我們暫且稱其為序列號碼 Dim diskModel As String 序列號 For Each cmicWmiObj As ManagementObject In cmicWmi.Get diskId = cmicWmiObj("signature") diskSerialNumber = cmicWmiObj("serialnumber") diskModel
= cmicWmiObj("Model") Next

個人建議用Wmiy中的signature來作為ID,畢竟是數字,且不重復。

PS:順帶提一個硬盤的容量,通過屬性size可以獲取單個硬盤的大小,加起來的話就是電腦總容量了。

2、CPU序列號

        Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor")
        Dim cpuId As String
        For Each WmiObj As ManagementObject In Wmi.Get
            cpuId = WmiObj("ProcessorId")
        Next

3、MAC地址和IP地址

        Dim netid As String = ""
        Dim ip As String
        Dim searcher As New ManagementObjectSearcher("select * from win32_NetworkAdapterConfiguration")
        Dim moc2 As ManagementObjectCollection = searcher.Get()
        For Each mo As ManagementObject In moc2
            If mo("IPEnabled") Then
                netid = mo("MACAddress")
                ip = mo("IpAddress")(0)
                Exit For
            End If
        Next
IpAddress得到的是含有倆個元素的數組,第一個是實際上的IP。

4、電腦系統類型與物理內存

        Dim pcType As String
        Dim pcMemory As String
        Dim mos As New ManagementObjectSearcher("select * from Win32_ComputerSystem")
        For Each mo As Object In mos.Get()
            pcType = mo("SystemType")
            pcMemory = mo("TotalPhysicalMemory")
        Next

系統類型,電腦的操作系統;物理內存,即是指運行內存。

比如我當前電腦配置是“x64-based PC”、“8272879616”-8G

5、其它

  Dim userName = Environment.UserName--獲取用戶名 eg:Admin
  Dim machineName = Environment.MachineName--獲取電腦名稱 eg:IBM777-PB4DVTY

C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)