我刚做了取机器码做注册 (取硬盘id号)但是我用此硬盘作为母盘 其他的硬盘就不需注册了,(是取硬盘号一样的意思!)怎么才能取出计算机的唯一标识呢?
急的很……所以在线等!

解决方案 »

  1.   

    http://blog.sina.com.cn/s/blog_4c837c4d0100g5iy.html
    利用计算机CPU号绑定MAC地址作为唯一。
      

  2.   

    可以试试用计算机名称CPU编号!
      

  3.   

    去cpu号
    using System; 
    using System.Runtime.InteropServices; 
    using System.Management; namespace Hard

    /// <summary> 
    /// Hardware_Mac 的摘要说明。 
    /// </summary> 
    internal class clsHardInfo 

    //取CPU编号 
    internal 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  internal string GetDiskID()
    {
    try
    {
    //获取硬盘ID 
    String HDid = "";
    ManagementClass mc = new ManagementClass("Win32_DiskDrive");
    ManagementObjectCollection moc = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
    HDid = (string)mo.Properties["Model"].Value;
    }
    moc = null;
    mc = null;
    return HDid;
    }
    catch
    {
    return "";
    }
    finally
    {
    } }
    //取第一块硬盘编号 
    internal 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(Exception ex)

    return ""; 

    }//end  internal 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)] 
    internal struct ADAPTER_STATUS 

    [MarshalAs(UnmanagedType.ByValArray, SizeConst=6)] 
    internal byte[] adapter_address; 
    internal byte rev_major; 
    internal byte reserved0; 
    internal byte adapter_type; 
    internal byte rev_minor; 
    internal ushort duration; 
    internal ushort frmr_recv; 
    internal ushort frmr_xmit; 
    internal ushort iframe_recv_err; 
    internal ushort xmit_aborts; 
    internal uint xmit_success; 
    internal uint recv_success; 
    internal ushort iframe_xmit_err; 
    internal ushort recv_buff_unavail; 
    internal ushort t1_timeouts; 
    internal ushort ti_timeouts; 
    internal uint reserved1; 
    internal ushort free_ncbs; 
    internal ushort max_cfg_ncbs; 
    internal ushort max_ncbs; 
    internal ushort xmit_buf_unavail; 
    internal ushort max_dgram_size; 
    internal ushort pending_sess; 
    internal ushort max_cfg_sess; 
    internal ushort max_sess; 
    internal ushort max_sess_pkt_size; 
    internal ushort name_count; 
    }  [StructLayout(LayoutKind.Sequential)] 
    internal struct NAME_BUFFER 

    [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] 
    internal byte[] name; 
    internal byte name_num; 
    internal byte name_flags; 
    }  [StructLayout(LayoutKind.Sequential)] 
    internal struct NCB 

    internal byte ncb_command; 
    internal byte ncb_retcode; 
    internal byte ncb_lsn; 
    internal byte ncb_num; 
    internal IntPtr ncb_buffer; 
    internal ushort ncb_length; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] 
    internal byte[] ncb_callname; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] 
    internal byte[] ncb_name; 
    internal byte ncb_rto; 
    internal byte ncb_sto; 
    internal IntPtr ncb_post; 
    internal byte ncb_lana_num; 
    internal byte ncb_cmd_cplt; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=10)] 
    internal byte[] ncb_reserve; 
    internal IntPtr ncb_event; 
    }  [StructLayout(LayoutKind.Sequential)] 
    internal struct LANA_ENUM 

    internal byte length; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.MAX_LANA)] 
    internal byte[] lana; 
    }  [StructLayout(LayoutKind.Auto)] 
    internal struct ASTAT 

    internal ADAPTER_STATUS adapt; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NUM_NAMEBUF)] 
    internal NAME_BUFFER[] NameBuff; 

    internal class Win32API 

    [DllImport("NETAPI32.DLL")] 
    internal static extern char Netbios(ref NCB ncb); 
    }  internal 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'); 
    }  } 

      

  4.   

    上面除了取cpu号,硬盘号外,还可以取网卡mac地址
      

  5.   

    硬盘序列号
    CPU序列号
    http://topic.csdn.net/u/20100830/15/231b8123-9167-4f69-980b-a5d82342f77d.html
      

  6.   

    回楼上的 我使用过上面的方法 !
    取出来的cpu和硬盘id 是一样的(我这的硬盘和主板是同一个厂家送的 一次送很多 所以id号和cpu都不行)
    有没有其他的计算机唯一标识啊?
      

  7.   

    还有 网卡的mac地址是可变得 !
      

  8.   

    山寨厂家?
    因特尔cpu怎么可能id都一样?
      

  9.   


    是取的cpu的编号,同一批出厂的产品cpu的编号是一样的,cpu全球唯一的序列好不知道怎么取
      

  10.   

    哦,对了,上面是取cpu编号,同一批是一样的
    你取第一块硬盘号行吗?
      

  11.   

    看你到底要达到什么目的了。mac/cpu编号好像对无法区分一台机器上的多个virtual machines.
      

  12.   

     最后我用这个方法取的硬盘号:大家参考一下下 反正现在取的不一样了!        public string GetDiskSerialNumber()
            {
                ManagementObjectSearcher mos = new ManagementObjectSearcher();
                mos.Query = new SelectQuery("Win32_DiskDrive", "", new string[] { "PNPDeviceID", "Signature" });
                ManagementObjectCollection myCollection = mos.Get();
                ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator();
                em.MoveNext();
                ManagementBaseObject moo = em.Current;
                string id = moo.Properties["signature"].Value.ToString().Trim();
                return id;
            }
      

  13.   

    晕,楼主已经解决了啊
    我也刚找到获取cpu唯一序列号的代码
      

  14.   


    那快给我发一份吧!!!
    谢谢了!!!现在又急着用呢!十分感谢了![email protected]
    回复也行啊 谢谢哦