| 
				 BOOL IsOverTime(int nYear,int nMonth,int nDate) 
{ 
    SYSTEMTIME st;GetSystemTime(&st); 
    if(st.wYear>nYear)return TRUE; 
    else if(st.wYear<nYear)return FALSE; 
    else    {   if(st.wMonth>nMonth)        { return TRUE;} 
        else    {  if(st.wMonth==nMonth&&st.wDay>nDate)return TRUE;} 
    }   return FALSE; 
}  
如果您前移了机器时间则将终止时间nYear=-1并写入“c:\\muxuanshe.sys”,软件以后终止运行! 
另一种情况是对于正常的剩余时间计算:IsOverTime(nYear,nMonth,nDate),不再赘述,具体实现请参见例子代码。 
这里介绍的方法主要是要注意存放时间的文件要保密,如果知道了时间存放位置,那么时间限制就很容易被解除。也可以用其他更为稳妥的方法将将时间存放,比如存放在注册表中。 
3  根据机器码实现软件注册 
机器码指与计算机硬件(cpu、网卡、硬盘)有关的串号,如硬盘序列号、MAC地址等,编写软件的人常用机器码作为产生软件序列号的依据,目的是区分用户,确保自己的软件使用受控。下面通过读取用户计算机硬盘卷序列号,经一定的加密算法进行换算后,返回给用户一个产品注册码,由于硬盘卷序列号是惟一的,提供的产品注册码也是惟一的,用户利用该注册码通过验证后获得软件全部功能。 
在笔者的编程实践发现有时候由于所使用的函数不正确,常常不能正确获取到硬盘的序列号,这里就这一问题进行讨论。 			
				 |