用。NET 裡面的任何一種語言實現  CPU的ID號怎麼讀出來  請問你們有誰知道嗎?------- 要編寫自己的程序代碼來實現?

解决方案 »

  1.   

    好象是用WMI,看一下MSDN里的WIN32_XXXX的东西,应该可以解决的
      

  2.   

    讀CPU ID號代碼 [C#]在此!!!
    using System;
    using System.Runtime.InteropServices;
    using System.Management;//要引用System.Management.Dll程序集
    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'); 
    }  }
    }
      

  3.   

    *****************************************************************************************
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    namespace Hardware
    {
    /// <summary>
    /// Form1 的摘要描述。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.Label label4;
    private System.Windows.Forms.Label label5;
    /// <summary>
    /// 設計工具所需的變數。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows Form 設計工具支援的必要項
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 呼叫之後加入任何建構函式程式碼
    //
    } /// <summary>
    /// 清除任何使用中的資源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form 設計工具產生的程式碼
    /// <summary>
    /// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
    /// 這個方法的內容。
    /// </summary>
    private void InitializeComponent()
    {
    this.label1 = new System.Windows.Forms.Label();
    this.button1 = new System.Windows.Forms.Button();
    this.label2 = new System.Windows.Forms.Label();
    this.label3 = new System.Windows.Forms.Label();
    this.label4 = new System.Windows.Forms.Label();
    this.label5 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(56, 40);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(392, 23);
    this.label1.TabIndex = 0;
    this.label1.Text = "label1";
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(296, 216);
    this.button1.Name = "button1";
    this.button1.TabIndex = 1;
    this.button1.Text = "button1";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // label2
    // 
    this.label2.Location = new System.Drawing.Point(64, 80);
    this.label2.Name = "label2";
    this.label2.Size = new System.Drawing.Size(384, 23);
    this.label2.TabIndex = 2;
    this.label2.Text = "label2";
    // 
    // label3
    // 
    this.label3.Location = new System.Drawing.Point(64, 120);
    this.label3.Name = "label3";
    this.label3.Size = new System.Drawing.Size(376, 23);
    this.label3.TabIndex = 3;
    this.label3.Text = "label3";
    // 
    // label4
    // 
    this.label4.Location = new System.Drawing.Point(64, 152);
    this.label4.Name = "label4";
    this.label4.Size = new System.Drawing.Size(376, 23);
    this.label4.TabIndex = 4;
    this.label4.Text = "label4";
    // 
    // label5
    // 
    this.label5.Location = new System.Drawing.Point(72, 184);
    this.label5.Name = "label5";
    this.label5.Size = new System.Drawing.Size(136, 23);
    this.label5.TabIndex = 5;
    this.label5.Text = "label5";
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(472, 266);
    this.Controls.Add(this.label5);
    this.Controls.Add(this.label4);
    this.Controls.Add(this.label3);
    this.Controls.Add(this.label2);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.label1);
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 應用程式的主進入點。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    HardwareInfo  cls =new HardwareInfo ();
    this.label1.Text =cls.GetCpuID ();
    this.label2.Text =cls.GetHostName();
    this.label3.Text =cls.GetMacAddress();
    this.label4.Text =cls.GetHardDiskID ();
    this.label5.Text =System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName ()).AddressList[0].ToString() ; }
    }
    }
      

  4.   

    private string[] GetMoc()
    {
    string[] str = new string[2];
    ManagementClass mcCpu = new ManagementClass("win32_Processor");
    ManagementObjectCollection mocCpu = mcCpu.GetInstances();
    foreach(ManagementObject m in mocCpu)
    {
    str[0] = m["ProcessorId"].ToString();
    } ManagementClass mcHD = new ManagementClass("win32_logicaldisk");
    ManagementObjectCollection mocHD = mcHD.GetInstances();
    foreach(ManagementObject m in mocHD)
    {
    if(m["DeviceID"].ToString() == "C:")
    {
    str[1] = m["VolumeSerialNumber"].ToString();
    break;
    }
    }
    return str;
    }获取硬盘,CPU序列号  ,粘贴上去就能用,