天天看點

C#/VB.NET 擷取電腦屬性(硬碟ID、硬碟容量、Cpu序列号、MAC位址、系統類型)

在開發過程中,經常需要擷取電腦的一些屬性,如擷取硬碟ID/CPU序列号/MAC位址作為來加密字元串。

1、硬碟

在我檢視網上一些文檔時,發現很多人對硬碟序列号很模糊~

什麼叫硬碟序列号?指的是作為一個硬碟的辨別;但是有時候發現,同僚的電腦硬碟序列号有重複的。是以硬碟辨別我們可以試試用ID,這個如何擷取下面講解。

C#/VB.NET 擷取電腦屬性(硬碟ID、硬碟容量、Cpu序列号、MAC位址、系統類型)
C#/VB.NET 擷取電腦屬性(硬碟ID、硬碟容量、Cpu序列号、MAC位址、系統類型)

我們可以運作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

作者:

唐宋元明清2188

出處:

http://www.cnblogs.com/kybs0/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接配接,否則保留追究法律責任的權利。