疑问

解决方案 »

  1.   

    网卡硬件地址是指MAC地址吧?这个貌似是可以改的。
    CPU序列号,硬盘ID这2个应该是不能改,除了生产厂商。
      

  2.   

    我说的网卡硬件地址就是指MAC地址。这个有时会变吗?
      

  3.   

    网卡的MAC地址是可以用工具修改的楼主想要一个唯一标示一台机器的字段吧
      

  4.   

    是的,楼上的,用CPU序列号,硬盘ID,网卡硬件地址加起来做的唯一标识大多机器是不变的,但也存在几台机器是会变的。可惜就是不能在那几台机器上调试。
      

  5.   

    我不太赞成“加起来形成唯一标示”的做法如果万一用户通过工具修改了MAC地址,就会破坏验证机制
      

  6.   

    用户没有修改MAC地址,我是用户登录后注册成功,退出再登录就看到注册没成功,因为用CPU序列号,硬盘ID,网卡硬件地址加起来做的唯一标识又变了。这问题在公司的机器上没发现过,但在客户那就出现几次了,我们公司的机器都不能上INTERTEK,只能上公司的内部网
      

  7.   

    网卡的MAC地址一定是不可改变的,尽管可以恶意的修改但是结果却是另一台与之有相同MAC地址的机子上不了网,
      

  8.   

    网卡物理地址不能改,MAC地址可以改,默认情况下网卡物理地址就是MAC地址。
    但如果改动了MAC地址,两个就不一样了
      

  9.   

    1.CPU序列号,AMD的CPU是没有的现在INTEL的CPU,除非用户主动在BIOS里面打开查询CPU 序列号的功能,否则OS不能直接取到,除非用非法手段,用托管代码取不到2.硬盘序列号,不是每家硬盘厂商都是有序列号的,有特定系列的硬盘,取出来的都是一样的,也有可能根本取不到,报错,无法访问逻辑驱动器,并且这个也和BIOS设置相关3:网卡MAC号倒是可以,但是这个太好换了(硬件),软件方面,只需要修改注册表就能修改MAC号码,如果是主动修改,可以用生成器生成一个唯一的MAC号码,重复机率很小
      

  10.   

    关于CPU序列号,AMD的CPU取出来的都是一样的
      

  11.   

    我找到原因了。是硬盘ID的问题,当插入U盘并与机器连接时取的硬盘ID就有问题,断开后就正常了。谢谢大家帮助,散分!大家都有^_^
      

  12.   

    using System;
    using System.Runtime.InteropServices;
    using System.Management;namespace Hardware
    {
        public class HardwareInfo
        {
            ///   <summary>   
            ///   得到硬盘序号
            ///   </summary>   
            public string GetHDId()
            {
                string strHardInfo = "";
                ManagementClass cimObject = new ManagementClass("Win32_DiskDrive");
                ManagementObjectCollection mocHard = cimObject.GetInstances();
                foreach (ManagementObject moHard in mocHard)
                {
                    strHardInfo += moHard["Model"].ToString() + "_";
                }
                return strHardInfo.Substring(0, strHardInfo.Length - 1);
            }        ///   <summary>   
            ///   得到CPU序号
            ///   </summary>   
            public string GetCPUId()
            {
                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;
            }
        }
    }
    我正在研究PocketPC里获得硬件信息,现还未有结果。以上代码是在台式机下面可以实向的,你可试试!