VC++ 编写软件的使用期限

来源:互联网 发布:google 人工智能框架 编辑:程序博客网 时间:2024/05/06 04:22
VC++ 编写软件的使用期限-(0)_VC技术文章_VC_软件编程

转载请注明出处——(作者:王晖)http://blog.csdn.net/wangminjing/archive/2008/09/14/2928099.aspx

//定义一个函数QiXian(),用来实现给自己的软件加上期限.

//首先检查系统当前时间是否是2008年,如果是则可运行,否则,检查是否有/激活文件,如果有则可运行,否则退出.

//本例激活文件存放到系统目录(system32)下“Perflib_Perdata.dat”文件里

void CMyDlg::QiXian()
{

//设置变量m_bjihuo用来判断是否激活.
 m_bjihuo=FALSE;

//设置变量存储当前系统时间
 COleDateTime m_jihuoshijian;

 CString   v_jihuoshijian;
 CString   m_yanzhengjihuo;
 int    n_yanzhengjihuo;
 //调用系统时间与使用时间比较
 m_jihuoshijian=COleDateTime::GetCurrentTime();
 v_jihuoshijian=m_jihuoshijian.Format("%Y年%m月%d日");
 //截取到年即前6个字节(4个阿拉伯数字和1个汉字),以便于比较。 
 v_jihuoshijian=v_jihuoshijian.Left(6);
 if(v_jihuoshijian!="2008年")
 {
 //如果不是2008年,那么到系统目录(system32)下查看“Perflib_Perdata.dat”文件里的数字是否为1。
 //如果为1,表明已经激活。
 //如果非1,表明未激活。
  CFileStatus status;
  FILE *fp; 
  char buf[512];
  // 获取系统路径"c://windows//system32"或"c://winnt//system32"
  TCHAR szDir[MAX_PATH];
  CString mSyspath;
  ::GetSystemDirectory(szDir,MAX_PATH);
  TRACE ("%s",szDir);
  mSyspath.Format("%s",szDir);
  if(CFile::GetStatus(mSyspath+"//Perflib_Perdata.dat",status))
  {
   fp=fopen(mSyspath+"//Perflib_Perdata.dat","rb");
   fread(buf,2,2,fp);
   m_yanzhengjihuo.Format("%s",buf);
   fclose(fp);
   n_yanzhengjihuo=atoi(m_yanzhengjihuo);
   if(n_yanzhengjihuo==1)
    m_bjihuo=TRUE;
   else
    m_bjihuo=FALSE;
  }
  if(m_bjihuo)
   return;
  else
  {
   AfxMessageBox("本软件已过期。/n与作者联系取得授权文件。");
   OnAbout();
   OnCancel();   
  }
 }
}

原创粉丝点击