机器码获取生成注册码.docx

上传人:b****5 文档编号:6107289 上传时间:2023-01-03 格式:DOCX 页数:6 大小:16.54KB
下载 相关 举报
机器码获取生成注册码.docx_第1页
第1页 / 共6页
机器码获取生成注册码.docx_第2页
第2页 / 共6页
机器码获取生成注册码.docx_第3页
第3页 / 共6页
机器码获取生成注册码.docx_第4页
第4页 / 共6页
机器码获取生成注册码.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

机器码获取生成注册码.docx

《机器码获取生成注册码.docx》由会员分享,可在线阅读,更多相关《机器码获取生成注册码.docx(6页珍藏版)》请在冰豆网上搜索。

机器码获取生成注册码.docx

机器码获取生成注册码

机器码获取生成注册码

2010年07月11日星期日18:

06

转载自xhg83

最终编辑xhg83

   通过获取硬盘的物理序列号和网卡MAC地址,为您的程序提供了获取唯一的机器码,你可以根据此码,生成自己产品注册码,有效防止软件的盗版

  可以自己根据获取到的硬盘序列号和网卡MAC地址进行一定的加密算法生成,唯一的机器码.

给自己的软件制作注册码

从今天起,您开发的的任何软件如果您愿意都可以为之加密--为您的软件制作一款注册机!

   当您看完这篇文章时,您就可以理直气壮的告诉您的用户:

"喂,想用我的软件是吧掏钱!

".

   呵呵,这当然只是给自己壮胆的话,现在连万能注册机都有了,人家还怕啥不过只要您想想微软,人家再牛B的加密技术都会被

国人"鄙视"但人家不也在中国大把大把的捞钱吗

OK,不扯了,我们进入正题.

同一般的软件注册一样,我们这里的注册是这样进行的:

1.首先根据用户的硬件信息生成24位的机器码

     --相当于种子,用于生成随机数

   2.采用注册机根据特征数字生成一个24位注册码

     --相当于伪随机数生成器,输出长度自己定,最后用一个格式化函数,将随机数映射到ASCII字符集合

   3.用户输入注册码注册成功

假设客户很喜欢您的软件,也假设他没有破解,他需要通过以下方式向您取得注册码:

(1).如果他能上网,他需要把机器码用Email发给您;

(2).如果他不能上网,他可以把机器码用手机短信的方式发给您.

(3).如果他没有手机,他可以带着机器码然后坐火车到您的办公室想您要一个注册码.

  --第3条只是为了让您看帖子的时候别太枯燥了,抱歉.

现在,您拿到了客户的机器码后,如果您同时也收到了他汇的钱,呵呵,好像给软件加密就是为了要钱吧那么您就可以用客户的机器

码生成一个唯一的注册码再用同样的方式给用户,最后,用户输入注册码即可!

需要强调的是客户机器的硬件信息获取方式是有很多种选择的.这里我们选择最放心的两个硬件:

CUP的序列号和硬盘的卷标号.好了,

下面您就可以一步一步制作一款软件注册机了.

步骤一:

获得CUP序列号和硬盘序列号的实现代码如下:

Java代码

#region获取cpu的序列号  

publicstringgetCpu()          

{              

    stringstrCpu=null;            

    ManagementClassmyCpu=newManagementClass("win32_Processor");              

    ManagementObjectCollectionmyCpuConnection=();              

    foreach(ManagementObjectmyObjectinmyCpuConnection)              

    {                  

         strCpu=["Processorid"].();                  

         break;              

    }             

    returnstrCpu;          

}  

#endregion

#region获取cpu的序列号

publicstringgetCpu()       

{           

    stringstrCpu=null;         

    ManagementClassmyCpu=newManagementClass("win32_Processor");           

    ManagementObjectCollectionmyCpuConnection=();           

    foreach(ManagementObjectmyObjectinmyCpuConnection)           

    {               

         strCpu=["Processorid"].();               

         break;           

    }          

    returnstrCpu;       

}

#endregion

Java代码

#region获取设备硬盘的卷标号  

publicstringGetDiskVolumeSerialNumber()          

{              

     ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");             

     ManagementObjectdisk=newManagementObject("=\"d:

\"");     

     ();              

     return("VolumeSerialNumber").ToString();          

}  

#endregion

#region获取设备硬盘的卷标号

publicstringGetDiskVolumeSerialNumber()       

{           

     ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");          

     ManagementObjectdisk=newManagementObject("=\"d:

\"");  

     ();           

     return("VolumeSerialNumber").ToString();       

}

#endregion

步骤二:

收集硬件信息生成机器码,代码如下:

Java代码

privatevoidbutton1_Click(objectsender,EventArgse)       {              

     =getCpu()+GetDiskVolumeSerialNumber();oString());                      

           if(intNumber[j]>=48&&intNumber[j]<=57)oString();                      

            }                      

           elseif(intNumber[j]>=65&&intNumber[j]<=90)oString();                      

            }                     

            elseif(intNumber[j]>=97&&intNumber[j]<=122)oString();                      

            }                      

            elseoString();   

                }                          

                else      

                {                               

                    strAsciiName+=(intNumber[j]-9).ToString();                          

                 }                      

             }                      

             =strAsciiName;oString());                   

           if(intNumber[j]>=48&&intNumber[j]<=57)oString();                   

            }                   

           elseif(intNumber[j]>=65&&intNumber[j]<=90)oString();                   

            }                  

            elseif(intNumber[j]>=97&&intNumber[j]<=122)oString();                   

            }                   

            elseoString();

                }                       

                else   

                {                            

                    strAsciiName+=(intNumber[j]-9).ToString();                       

                 }                   

             }                   

             =strAsciiName;reateSubKey("ZHY").CreateSubKey("").                   CreateSubKey                   ("UserName","MySoft");                      

             ("注册成功");                  

        }                  

        else                  

        {                      

            ("注册码输入错误");                                  

        }                          

     }              

     else{("请生成注册码","注册提示");}                   

}

privatevoidbtnRegist_Click(objectsender,EventArgse)

{         

   if!

="")          

   {               

       if               

       {                   

             retkey=                   OpenSubKey

("software",true).CreateSubKey("ZHY").CreateSubKey("").                   CreateSubKey                   ("UserName","MySoft");                   

             ("注册成功");               

        }               

        else               

        {                   

            ("注册码输入错误");                               

        }                       

     }           

     else{("请生成注册码","注册提示");}                

}

/////////////////////评论//////////////////////////////

我觉得这里有问题:

1、如果我要把软件注册移植到别的电脑上,不是又要重新去申请注册吗

2、用户体验很有问题,至少我不会为了装一软件而去要注册码的

3、一般的注册码机制,是发布软件的时候生成一个唯一的GUID,然后经过处理后,发送给客户。

客户得到后通过网络注册。

而不是客

户自己去提供一个什么机器码

转自:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1