日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)

發布時間:2024/8/1 C# 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近學習過程中,想到提取系統硬件信息做一些驗證,故而對網上提到的利用.NET System.Management類獲取硬件信息做了進一步的學習、驗證。驗證是分別在4臺電腦,XP SP3系統中進行,特將驗證過程記錄于此。

??? 說明:

電腦1(聯想品牌電腦);

電腦2(HP品牌電腦);

電腦3(聯想品牌電腦);

電腦4(兼容機);

  • 獲取CPU編號:
ManagementClass mc = new ManagementClass("Win32_Processor");??
ManagementObjectCollection moc = mc.GetInstances();??
string strID = null ;????
foreach( ManagementObject mo in moc )????
{????
?strID = mo.Properties["ProcessorId"].Value.ToString();??
?break;???
}??????????????
textBox1.Text +=? "CPU ID:" + strID;?

?

???? 返回結果:

??????? 電腦1:CPU ID:BFEBFBFF00000F27

??????? 電腦2:CPU ID:BFEBFBFF00000F27

??????? 電腦3:CPU ID:BFEBFBFF00000F29

??????? 電腦4:CPU ID:BFEBFBFF00000F29

  • 獲取主板編號:
ManagementClass mc = new ManagementClass("Win32_BaseBoard");??
ManagementObjectCollection moc = mc.GetInstances();??
string strID = null ;????
foreach( ManagementObject mo in moc )????
{????
?strID = mo.Properties["SerialNumber"].Value.ToString();??
?break;???
}??????????????
textBox1.Text +=? "主板 ID:" + strID;?

?

?

????? 返回結果:

??????? 電腦1:主板 ID:

??????? 電腦2:主板 ID:CN24401483

??????? 電腦3:主板 ID:AZF241001101

??????? 電腦4:主板 ID:?

?

  • 獲取硬盤編號:

ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");??
//網上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive獲得的硬盤信息中并不包含SerialNumber屬性。???
ManagementObjectCollection moc = mc.GetInstances();??
string strID = null ;????
foreach( ManagementObject mo in moc )????
{????
?strID = mo.Properties["SerialNumber"].Value.ToString();??
?break;???
}??????????????
textBox1.Text +=? "硬盤 ID:" + strID;??
??????????? ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
??????????? //網上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive獲得的硬盤信息中并不包含SerialNumber屬性。
??????????? ManagementObjectCollection moc = mc.GetInstances();
??????????? string strID = null ;??
??????????? foreach( ManagementObject mo in moc )??
??????????? {??
???????????? strID = mo.Properties["SerialNumber"].Value.ToString();
???????????? break;?
??????????? }????????????
??????????? textBox1.Text +=? "硬盤 ID:" + strID;

?

?

?

?

????? 返回結果:

??????? 電腦1:硬盤 ID:4833395344463658202020202020202020202020?

??????? 電腦2:硬盤 ID:WD-WMAJD1092385

??????? 電腦3:硬盤 ID:4a353756354d5939202020202020202020202020

??????? 電腦4:硬盤 ID:0637J2FW508014

  • 獲取BIOS編號:

ManagementClass mc = new ManagementClass("Win32_BIOS");??
ManagementObjectCollection moc = mc.GetInstances();??
string strID = null ;????
foreach( ManagementObject mo in moc )????
{????
?strID = mo.Properties["SerialNumber"].Value.ToString();??
?break;???
}??????????????
textBox1.Text +=? "BIOS ID:" + strID;?

?

?

?

?

???? 返回結果:

??????? 電腦1:BIOS ID:??

??????? 電腦2:BIOS ID:CN24401483

??????? 電腦3:BIOS ID:

??????? 電腦4:BIOS ID:

?

?

?

??? 總結:

??? 由以上各步看出,通過Win32_Processor獲取CPUID不正確,或者說Win32_Processor字段就不包含CPU編號信息。

??? 通過Win32_BaseBoard獲取主板信息,但不是所有的主板都有編號,或者說不是能獲取所有系統主板的編號。

??? 通過Win32_PhysicalMedia獲取硬盤編號應該沒有問題。但網上說可以通過Win32_DiskDrive獲取,其實所得信息根本不包含SerialNumber。

??? 通過Win32_BIOS獲取BIOS信息,基本和獲取主板信息差不多。就是說:不是所有的主板BIOS信息都有編號。

?

??? 另外,可以將通過以上各字段所得信息輸出,逐個查看所有信息 屬性和對應的值。代碼如下:

ManagementClass mc = new ManagementClass("Win32_Processor");??
ManagementObjectCollection moc = mc.GetInstances();???
foreach( ManagementObject mo in moc )????
{????
?textBox1.Text += "/r/n============CUP信息===========";??
?foreach (PropertyData pd in mo.Properties)??
?{??
???? textBox1.Text += "/r/n" + pd.Name + "/t";??
???? if (pd.Value != null)??
???? {??
???????? textBox1.Text += pd.Value.ToString();??
???? }??
?}??
?textBox1.Text += "/r/n/r/n=======================";??
}???
??????????? ManagementClass mc = new ManagementClass("Win32_Processor");
??????????? ManagementObjectCollection moc = mc.GetInstances();?
??????????? foreach( ManagementObject mo in moc )??
??????????? {??
???????????? textBox1.Text += "/r/n============CUP信息===========";
???????????? foreach (PropertyData pd in mo.Properties)
???????????? {
???????????????? textBox1.Text += "/r/n" + pd.Name + "/t";
???????????????? if (pd.Value != null)
???????????????? {
???????????????????? textBox1.Text += pd.Value.ToString();
???????????????? }
???????????? }
???????????? textBox1.Text += "/r/n/r/n=======================";
??????????? }

?

?

?

?===============================================

首先要添加對System.Management.dll的引用

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Runtime.InteropServices; using System.Security.Cryptography; using Microsoft.Win32; using System.Management; using System.IO; namespace 哈哈 { ? ? class DataOperate ? ? { ? ? ? ? private SqlConnection conn = null; ? ? ? ? public DataOperate(string connStr) ? ? ? ? { ? ? ? ? ? ? conn = new SqlConnection(); ? ? ? ? ? ? conn.ConnectionString = connStr; ? ? ? ? } ? ? ? ? private void ColseConnnection() ? ? ? ? { ? ? ? ? ? ? if (conn.State == ConnectionState.Open) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? conn.Close(); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void OpenConnection() ? ? ? ? { ? ? ? ? ? ? if (conn.State == ConnectionState.Closed) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? conn.Open(); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? /// <summary> ? ? ? ? /// 這里是獲取cpu的id ? ? ? ? /// </summary> ? ? ? ? /// <returns></returns> ? ? ? ? public string GetProcessID() ? ? ? ? { ? ? ? ? ? ? try ??????????? { ? ? ? ? ? ? ? ? string str = string.Empty; ? ? ? ? ? ? ? ? ManagementClass mcCpu = new ManagementClass("win32_Processor"); ? ? ? ? ? ? ? ? ManagementObjectCollection mocCpu = mcCpu.GetInstances(); ? ? ? ? ? ? ? ? foreach (ManagementObject m in mocCpu) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? str = m["Processorid"].ToString().Trim().Substring(0, 8);//BFEBFBFF00000F65 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? return str; ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return "likeshan"; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? /// <summary> ? ? ? ? /// 獲取硬盤id ? ? ? ? /// </summary> ? ? ? ? /// <returns></returns> ? ? ? ? public string GetHardDiskID() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? string hdId = string.Empty; ? ? ? ? ? ? ? ? ManagementClass hardDisk = new ManagementClass("win32_DiskDrive"); ? ? ? ? ? ? ? ? ManagementObjectCollection hardDiskC = hardDisk.GetInstances(); ? ? ? ? ? ? ? ? foreach (ManagementObject m in hardDiskC) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //hdId = m["Model"].ToString().Trim(); ? ? ? ? ? ? ? ? ? ? hdId = m.Properties["Model"].Value.ToString();//WDC WD800BB-56JKC0 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? return hdId; ? ? ? ? ? ? } ? ? ? ? ? ? catch ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return "likeshan"; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? /// <summary> ? ? ? ? /// 獲取網卡地址 ? ? ? ? /// </summary> ? ? ? ? /// <returns></returns> ? ? ? ? public string GetNetwordAdapter() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? string MoAddress = string.Empty; ? ? ? ? ? ? ? ? ManagementClass networkAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration"); ? ? ? ? ? ? ? ? ManagementObjectCollection adapterC = networkAdapter.GetInstances(); ? ? ? ? ? ? ? ? foreach (ManagementObject m in adapterC) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? if ((bool)m["IPEnabled"] == true) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? MoAddress = m["MacAddress"].ToString().Trim(); ? ? ? ? ? ? ? ? ? ? ? ? m.Dispose(); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? return MoAddress; ? ? ? ? ? ? } ? ? ? ? ? ? catch ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return "likeshan"; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? public string GetBaseboard() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_baseboard"); ? ? ? ? ? ? ? ? string serNumber = string.Empty; ? ? ? ? ? ? ? ? string manufacturer = string.Empty; ? ? ? ? ? ? ? ? string product = string.Empty; ? ? ? ? ? ? ? ? ? foreach (ManagementObject m in mos.Get()) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? serNumber = m["SerialNumber"].ToString();//序列號 ? ? ? ? ? ? ? ? ? ? manufacturer = m["Manufacturer"].ToString();//制造商 ? ? ? ? ? ? ? ? ? ? product = m["Product"].ToString();//型號 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? return serNumber + " " + manufacturer + " " + product; ? ? ? ? ? ? } ? ? ? ? ? ? catch ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return "likeshan"; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? /// <summary> ? ? ? ? /// 加密算法(利用到了cpuid) ? ? ? ? /// </summary> ? ? ? ? /// <param name="data">要加密的字符串</param> ? ? ? ? /// <returns></returns> ? ? ? ? public string Encode(string data) ? ? ? ? { ? ? ? ? ? ? byte[] akey = ASCIIEncoding.ASCII.GetBytes(GetProcessID()); ? ? ? ? ? ? byte[] aIV = ASCIIEncoding.ASCII.GetBytes(GetProcessID()); ? ? ? ? ? ? using (DESCryptoServiceProvider CP = new DESCryptoServiceProvider()) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MemoryStream ms = new MemoryStream(); ? ? ? ? ? ? ? ? CryptoStream cs = new CryptoStream(ms, CP.CreateEncryptor(akey, aIV), CryptoStreamMode.Write); ? ? ? ? ? ? ? ? StreamWriter sw = new StreamWriter(cs); ? ? ? ? ? ? ? ? sw.Write(data); ? ? ? ? ? ? ? ? sw.Flush(); ? ? ? ? ? ? ? ? cs.FlushFinalBlock(); ? ? ? ? ? ? ? ? sw.Flush(); ? ? ? ? ? ? ? ? return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); ? ? ? ? ? ? } ??????? } ? ? ? ? /// <summary> ? ? ? ? /// 加密算法(利用cpuid) ? ? ? ? /// </summary> ? ? ? ? /// <param name="data">需要解密的字符串</param> ? ? ? ? /// <returns></returns> ? ? ? ? public string Decode(string data) ? ? ? ? { ? ? ? ? ? ? byte[] akey = ASCIIEncoding.ASCII.GetBytes(GetProcessID()); ? ? ? ? ? ? byte[] aIV = ASCIIEncoding.ASCII.GetBytes(GetProcessID()); ? ? ? ? ? ? byte[] Enc = null; ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? Enc = Convert.FromBase64String(data); ? ? ? ? ? ? } ? ? ? ? ? ? catch ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return null; ? ? ? ? ? ? } ? ? ? ? ? ? ? DESCryptoServiceProvider cp = new DESCryptoServiceProvider(); ? ? ? ? ? ? MemoryStream ms=new MemoryStream(Enc); ? ? ? ? ? ? CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(akey, aIV), CryptoStreamMode.Read); ? ? ? ? ? ? StreamReader reader = new StreamReader(cs); ? ? ? ? ? ? return reader.ReadToEnd(); ? ? ? ? } ? ? } }

?

?==============================================

?

首先需添加對System.Management的引用。

using System.Runtime.InteropServices;???
using System.Management;???
??
namespace Hardware???
{???
??? /// <summary>????
??? /// HardwareInfo 的摘要說明。????
??? /// </summary>????
??? public class HardwareInfo???
??? {???
??????? //取機器名?????
??????? public string GetHostName()???
??????? {???
??????????? return System.Net.Dns.GetHostName();???
??????? }???
??????? //取CPU編號????
??????? public String GetCpuID()???
??????? {???
??????????? try???
??????????? {???
??????????????? ManagementClass mc = new ManagementClass("Win32_Processor");???
??????????????? ManagementObjectCollection moc = mc.GetInstances();???
??
??????????????? String strCpuID = null;???
??????????????? foreach (ManagementObject mo in moc)???
??????????????? {???
??????????????????? strCpuID = mo.Properties["ProcessorId"].Value.ToString();???
??????????????????? break;???
??????????????? }???
??????????????? return strCpuID;???
??????????? }???
??????????? catch???
??????????? {???
??????????????? return "";???
??????????? }???
??
??????? }//end method????
??
??????? //取第一塊硬盤編號????
??????? public String GetHardDiskID()???
??????? {???
??????????? try???
??????????? {???
??????????????? ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");???
??????????????? String strHardDiskID = null;???
??????????????? foreach (ManagementObject mo in searcher.Get())???
??????????????? {???
??????????????????? strHardDiskID = mo["SerialNumber"].ToString().Trim();???
??????????????????? break;???
??????????????? }???
??????????????? return strHardDiskID;???
??????????? }???
??????????? catch???
??????????? {???
??????????????? return "";???
??????????? }???
??????? }//end?????
??
??????? public enum NCBCONST???
??????? {???
??????????? NCBNAMSZ = 16,????? /* absolute length of a net name???????? */???
??????????? MAX_LANA = 254,????? /* lana's in range 0 to MAX_LANA inclusive?? */???
??????????? NCBENUM = 0x37,????? /* NCB ENUMERATE LANA NUMBERS??????????? */???
??????????? NRC_GOODRET = 0x00,????? /* good return????????????????????????????? */???
??????????? NCBRESET = 0x32,????? /* NCB RESET??????????????????????? */???
??????????? NCBASTAT = 0x33,????? /* NCB ADAPTER STATUS????????????????? */???
??????????? NUM_NAMEBUF = 30,????? /* Number of NAME's BUFFER?????????????? */???
??????? }???
??
??????? [StructLayout(LayoutKind.Sequential)]???
??????? public struct ADAPTER_STATUS???
??????? {???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]???
??????????? public byte[] adapter_address;???
??????????? public byte rev_major;???
??????????? public byte reserved0;???
??????????? public byte adapter_type;???
??????????? public byte rev_minor;???
??????????? public ushort duration;???
??????????? public ushort frmr_recv;???
??????????? public ushort frmr_xmit;???
??????????? public ushort iframe_recv_err;???
??????????? public ushort xmit_aborts;???
??????????? public uint xmit_success;???
??????????? public uint recv_success;???
??????????? public ushort iframe_xmit_err;???
??????????? public ushort recv_buff_unavail;???
??????????? public ushort t1_timeouts;???
??????????? public ushort ti_timeouts;???
??????????? public uint reserved1;???
??????????? public ushort free_ncbs;???
??????????? public ushort max_cfg_ncbs;???
??????????? public ushort max_ncbs;???
??????????? public ushort xmit_buf_unavail;???
??????????? public ushort max_dgram_size;???
??????????? public ushort pending_sess;???
??????????? public ushort max_cfg_sess;???
??????????? public ushort max_sess;???
??????????? public ushort max_sess_pkt_size;???
??????????? public ushort name_count;???
??????? }???
??
??????? [StructLayout(LayoutKind.Sequential)]???
??????? public struct NAME_BUFFER???
??????? {???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]???
??????????? public byte[] name;???
??????????? public byte name_num;???
??????????? public byte name_flags;???
??????? }???
??
??????? [StructLayout(LayoutKind.Sequential)]???
??????? public struct NCB???
??????? {???
??????????? public byte ncb_command;???
??????????? public byte ncb_retcode;???
??????????? public byte ncb_lsn;???
??????????? public byte ncb_num;???
??????????? public IntPtr ncb_buffer;???
??????????? public ushort ncb_length;???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]???
??????????? public byte[] ncb_callname;???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NCBNAMSZ)]???
??????????? public byte[] ncb_name;???
??????????? public byte ncb_rto;???
??????????? public byte ncb_sto;???
??????????? public IntPtr ncb_post;???
??????????? public byte ncb_lana_num;???
??????????? public byte ncb_cmd_cplt;???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]???
??????????? public byte[] ncb_reserve;???
??????????? public IntPtr ncb_event;???
??????? }???
??
??????? [StructLayout(LayoutKind.Sequential)]???
??????? public struct LANA_ENUM???
??????? {???
??????????? public byte length;???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.MAX_LANA)]???
??????????? public byte[] lana;???
??????? }???
??
??????? [StructLayout(LayoutKind.Auto)]???
??????? public struct ASTAT???
??????? {???
??????????? public ADAPTER_STATUS adapt;???
??????????? [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)NCBCONST.NUM_NAMEBUF)]???
??????????? public NAME_BUFFER[] NameBuff;???
??????? }???
??????? public class Win32API???
??????? {???
??????????? [DllImport("NETAPI32.DLL")]???
??????????? public static extern char Netbios(ref NCB ncb);???
??????? }???
??
??????? public string GetMacAddress()???
??????? {???
??????????? string addr = "";???
??????????? try???
??????????? {???
??????????????? int cb;???
??????????????? ASTAT adapter;???
??????????????? NCB Ncb = new NCB();???
??????????????? char uRetCode;???
??????????????? LANA_ENUM lenum;???
??
??????????????? Ncb.ncb_command = (byte)NCBCONST.NCBENUM;???
??????????????? cb = Marshal.SizeOf(typeof(LANA_ENUM));???
??????????????? Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);???
??????????????? Ncb.ncb_length = (ushort)cb;???
??????????????? uRetCode = Win32API.Netbios(ref Ncb);???
??????????????? lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM));???
??????????????? Marshal.FreeHGlobal(Ncb.ncb_buffer);???
??????????????? if (uRetCode != (short)NCBCONST.NRC_GOODRET)???
??????????????????? return "";???
??
??????????????? for (int i = 0; i < lenum.length; i++)???
??????????????? {???
??????????????????? Ncb.ncb_command = (byte)NCBCONST.NCBRESET;???
??????????????????? Ncb.ncb_lana_num = lenum.lana[i];???
??????????????????? uRetCode = Win32API.Netbios(ref Ncb);???
??????????????????? if (uRetCode != (short)NCBCONST.NRC_GOODRET)???
??????????????????????? return "";???
??
??????????????????? Ncb.ncb_command = (byte)NCBCONST.NCBASTAT;???
??????????????????? Ncb.ncb_lana_num = lenum.lana[i];???
??????????????????? Ncb.ncb_callname[0] = (byte)'*';???
??????????????????? cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * (int)NCBCONST.NUM_NAMEBUF;???
??????????????????? Ncb.ncb_buffer = Marshal.AllocHGlobal(cb);???
??????????????????? Ncb.ncb_length = (ushort)cb;???
??????????????????? uRetCode = Win32API.Netbios(ref Ncb);???
??????????????????? adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(ADAPTER_STATUS));???
??????????????????? Marshal.FreeHGlobal(Ncb.ncb_buffer);???
??
??????????????????? if (uRetCode == (short)NCBCONST.NRC_GOODRET)???
??????????????????? {???
??????????????????????? if (i > 0)???
??????????????????????????? addr += ":";???
??????????????????????? addr = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",???
???????????????????????? adapter.adapt.adapter_address[0],???
???????????????????????? adapter.adapt.adapter_address[1],???
???????????????????????? adapter.adapt.adapter_address[2],???
???????????????????????? adapter.adapt.adapter_address[3],???
???????????????????????? adapter.adapt.adapter_address[4],???
???????????????????????? adapter.adapt.adapter_address[5]);???
??????????????????? }???
??????????????? }???
??????????? }???
??????????? catch???
??????????? { }???
??????????? return addr.Replace(' ', '0');???
??????? }???
??? }???
}??


?

?

使用方法舉例:

//獲取硬盤序列號????Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();???
string hardDiskID = hardwareInfo.GetHardDiskID();???
System.Console.WriteLine(hardDiskID);???
??
//獲取CPU序列號????
string cpuID = hardwareInfo.GetCpuID();???
System.Console.WriteLine(cpuID);???
//獲取硬盤序列號Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();string hardDiskID = hardwareInfo.GetHardDiskID();System.Console.WriteLine(hardDiskID);//獲取CPU序列號string cpuID = hardwareInfo.GetCpuID();System.Console.WriteLine(cpuID);? ?

?

==========

?引用樓主的代碼:

//定義DLL文件名,此文件路徑要加到系統Path中?????????

private const string _fileDll = @"CPUID_Util.dll";???

//GetCPUID是 dll里面的一個方法????????

? private const string _FountionName = @"GetCPUID";????????

? [DllImport(_fileDll, EntryPoint = _FountionName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]?????????

//C#中的申明?????????

public static extern string? GetCPUID(string id);??


?回復

?? //聲明一個stringBuilder類型字符串??

StringBuilder strcpu=new StringBuilder();???

//將strcpu帶入函數中????????

GetCPUID(strcpu);?

//此時的strcpu已經是cpuid了?? Console.writeLine(strcpu);

?

?

==================================

?

多核系統中每個處理器的ID是不同的,在哪個處理器上執行得到的就是哪個處理器的ID,獲取ID之前可以用SetThreadAffinityMask指定在哪個處理器上執行,這樣才能確保每次得到相同的結果。

總結

以上是生活随笔為你收集整理的C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。