前提:目标计算机无网络,但可以通过软件生成注册申请文件,用U盘复制到有网络的电脑上上传给服务方,服务方据此生成注册授权文件,再经U盘导入目标计算机,进行注册。由于没有网络,无法在目标计算机采用网络验证模式保证注册不扩散。
求教:是否有法在注册申请文件中加入目标计算机的唯一信息,授权文件只在目标计算机有效?
已尝试:CPU ID有重复或无法获取,MAC理论上无重复、但可修改、无网卡或网卡禁用时无法取得,硬盘序列号有重复或无法获取、GUID理论上无重复但不知道如何验证...

解决方案 »

  1.   

    可以用cpu+mac+硬盘序列号,这种重复的很少了。
      

  2.   

    多种方法组合如CPU ID,MAC,硬盘序列号获取注册信息
      

  3.   

    通过硬件的序列号吧,比如网卡,cpu。。
      

  4.   

    第一想到的就是网卡的MAC地址。。
    然后想到MAC好像有软件可以改。。
    还是读取什么CPU+网卡+主板的码吧。。
      

  5.   


     //获取磁盘序列号 
       try 
        { 
           System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive"); 
           System.UInt32 tmpUint32 = 0; 
           foreach(ManagementObject cmicWmiObj in cmicWmi.Get()) 
            { 
             tmpUint32 = Convert.ToUInt32(cmicWmiObj["signature"].ToString()); 
           } 
           this.textBox1.Text = tmpUint32.ToString(); 
           this.gProgressBar1.Value ++; 
       } 
       catch(Exception ex1) 
        { 
         throw new Exception(ex1.ToString()); 
       } 
       
       //获取cpu序列号 
       try 
        { 
           System.Management.ManagementObjectSearcher Wmi = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); 
           string tmpUint32_1 = string.Empty; 
           foreach(ManagementObject WmiObj in Wmi.Get()) 
            { 
             tmpUint32_1 =WmiObj["ProcessorId"].ToString(); 
           } 
           this.textBox2.Text = tmpUint32_1; 
           this.gProgressBar1.Value ++; 
       } 
       catch(Exception ex2) 
        { 
       throw new Exception(ex2.ToString()); 
       }
    这样取的CPU ID会重复、或者空,磁盘序列号倒是唯一的,然则似乎是分区的GUID,格式化/重装会改变...看起来和网络流传的没有区别,为何要特意做个文档下载?
      

  6.   

    +1越多越好,如果匹配度大于80%就OK,否则就NO,80%你可以根据在设置大一点,或者小一点,
      

  7.   

    提取cpu,网卡地址,硬盘时,一定要注意,提前第一个网卡地址,要不加个路由器,连接个网线就必须重新要注册码。
      

  8.   

    那客户方的电脑CPU或者硬盘坏了需要更换的时候呢?
    说的是动态加密?
    我一直在琢磨银行的U盾好呢还是加密狗好呢?