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

首頁 > 編程 > C# > 正文

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

2020-01-24 01:03:21
字體:
供稿:網(wǎng)友

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

using System.Runtime.InteropServices;using System.Management;using System;public class HardwareInfo{  //取機(jī)器名  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);  }  //取網(wǎng)卡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');  }}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#窗體操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》、《C#操作Excel技巧總結(jié)》、《C#中XML文件操作技巧匯總》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程

希望本文所述對大家C#程序設(shè)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湘潭市| 合阳县| 南汇区| 新竹县| 班玛县| 教育| 黄骅市| 涡阳县| 梅州市| 文登市| 祁东县| 柳江县| 同仁县| 遂川县| 镇康县| 滕州市| 湘潭市| 云霄县| 崇仁县| 桐乡市| 浏阳市| 桃园县| 龙川县| 公主岭市| 高淳县| 金堂县| 柳林县| 措勤县| 阳曲县| 隆回县| 龙山县| 保山市| 河东区| 大丰市| 田林县| 绩溪县| 广东省| 新竹县| 客服| 松原市| 武隆县|