zoukankan      html  css  js  c++  java
  • (轉)Net中获取CPU编号

    ].Net中获取CPU编号
    using System;
    using System.Runtime.InteropServices;
    using  System.Management;
    namespace Hardware
    {
     
    /// <summary>
     
    /// Hardware_Mac 的摘要说明。
     
    /// </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'); 
      }
     

     }

    }

  • 相关阅读:
    MVC之路由规则 (自定义,约束,debug)
    MCV之行为
    mvc之页面强类型
    Jquery异步上传图片
    三层VS控制器
    Oracle 表分区
    C#编写的通过汉字得到拼音和五笔码
    MYSQL存储过程学习
    Sina App Engine(SAE)入门教程(9)- SaeMail(邮件)使用
    状态CSS
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/725734.html
Copyright © 2011-2022 走看看