国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#獲取機器碼的方法詳解(機器名,CPU編號,硬盤編號,網卡mac等)

2019-10-29 21:24:28
字體:
來源:轉載
供稿:網友

本文實例講述了C#獲取機器碼的方法。分享給大家供大家參考,具體如下:

using System.Runtime.InteropServices;using System.Management;using System;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 "";    }  }//endpublic 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);  }  //取網卡mac  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');  }}


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 体育| 慈利县| 前郭尔| 浙江省| 雷州市| 黔东| 秦安县| 闽侯县| 巫溪县| 长治市| 冕宁县| 通道| 新巴尔虎右旗| 临泉县| 赤水市| 青铜峡市| 克拉玛依市| 盘山县| 日照市| 江都市| 静乐县| 新营市| 林州市| 临西县| 会宁县| 马边| 三亚市| 黔东| 长白| 南郑县| 巴林右旗| 平江县| 咸丰县| 大新县| 黄大仙区| 汕尾市| 锦州市| 兴义市| 滦南县| 安福县| 三江|