在线等:vc 6.0写入注册表内容,怎么从新启动就没有了

类别:VC

阿里妈妈帮你实现网络赚钱梦


操作注册表代码
BOOL   CShijianApp::InitInstance()
{
AfxEnableControlContainer();
//
TestTime   tt;
  CTime   CurTime   =   CTime::GetCurrentTime();
  CTime   t   =   CurTime;
      DWORD   ShiYong=43200;
        //检查软件是否第一次运行,如果是则设定限制时间
  //我们这儿设定软件在当前时间两分分钟后禁用
 
  if   (!tt.IsInstalled())
  {
    //CTime   t   =   CurTime     CTimeSpan(0,0,2,0);
    tt.SetLimitTime(t.GetYear(),t.GetMonth(),t.GetDay(),
    t.GetHour(),t.GetMinute(),t.GetSecond());

    tt.SetLimitJianGe(ShiYong);
    AfxMessageBox("第一次使用本软件",MB_OK);

  }
  else
  {
//判断时间间隔是否小于等于0

DWORD   JianGe1=0;
tt.GetLimitJianGe(JianGe1);
//判断是否已过使用时间
if(JianGe1 <=0){
::AfxMessageBox("试用版已到期,请联系购买一个正版使用",MB_OK);
}
else{
//本次试用时间计算
::AfxMessageBox("第n次试用",MB_OK);
CTime   lm;
tt.GetLimitTime(lm);
DWORD   HuaFei=0;
long   ShengXia=0;
if(lm >t){

::AfxMessageBox("向前更改时间",MB_OK);
ShengXia=0;
}
else{
HuaFei=(t-lm).GetTotalMinutes();
ShengXia=JianGe1-HuaFei;
}


//判断是否过期
if(ShengXia <=0)
{
ShengXia=0;
}
//写入注册剩余时间
tt.SetLimitJianGe(ShengXia);
//写入下次使用时刻
tt.SetLimitTime(t.GetYear(),t.GetMonth(),t.GetDay(),
t.GetHour(),t.GetMinute(),t.GetSecond());
//
}
  }

//   Standard   initialization
//   If   you   are   not   using   these   features   and   wish   to   reduce   the   size
//     of   your   final   executable,   you   should   remove   from   the   following
//     the   specific   initialization   routines   you   do   not   need.

#ifdef   _AFXDLL
Enable3dControls();//   Call   this   when   using   MFC   in   a   shared   DLL
#else
Enable3dControlsStatic();//   Call   this   when   linking   to   MFC   statically
#endif

CShijianDlg   dlg;
m_pMainWnd   =   &dlg;
int   nResponse   =   dlg.DoModal();
if   (nResponse   ==   IDOK)
{
//   TODO:   Place   code   here   to   handle   when   the   dialog   is
//     dismissed   with   OK
}
else   if   (nResponse   ==   IDCANCEL)
{
//   TODO:   Place   code   here   to   handle   when   the   dialog   is
//     dismissed   with   Cancel
}

//   Since   the   dialog   has   been   closed,   return   FALSE   so   that   we   exit   the
//     application,   rather   than   start   the   application "s   message   pump.
return   FALSE;
}


回答:

没有看到写注册表的代码.如果写完之后可以在注册表中看到而重启后没有的话可以考虑有没有还原卡等东西了.

回答:

写注册表的代码呢?
API中提供了这么几个函数:
RegOpenKeyEx,RegQueryValueEx,RegSetKeySecurity,RegSetValueEx等函数

回答:

没看到楼主的代码里有操作注册表的地方

回答:

//   TestTime.cpp:   implementation   of   the   TestTime   class.
//
//////////////////////////////////////////////////////////////////////

#include   "stdafx.h"
#include   "shijian.h"
#include   "TestTime.h"

#ifdef   _DEBUG
#undef   THIS_FILE
static   char   THIS_FILE[]=__FILE__;
#define   new   DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
//   Construction/Destruction
//////////////////////////////////////////////////////////////////////

TestTime::TestTime()
{

}

TestTime::~TestTime()
{

}
BOOL   TestTime::IsInstalled()
{
  BOOL   bInstalled   =   FALSE;
  DWORD   dwDisposition;
  HKEY   m_hKey;
  //打开注册表
  LONG   ret   =   RegCreateKeyEx   (HKEY_LOCAL_MACHINE,   "SOFTWARE\\TimeLimit",   0L,   NULL,
    REG_OPTION_VOLATILE,   KEY_ALL_ACCESS,   NULL,   &m_hKey,   &dwDisposition);
        if   (ret   !=   ERROR_SUCCESS)         //打开注册表失败
    return   FALSE;
 
  //从注册表中读入特征值
  DWORD   dwVal,dwType,dwLen;
  ret   =   RegQueryValueEx(m_hKey,   "Installed",   NULL,  
    &dwType,(unsigned   char*)&dwVal,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)//读取数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}
  //检查读到的特征值是否为1,如果是,则表明软件以前已运行过
  bInstalled   =   (dwVal   ==   1);
  //关闭注册表
  RegCloseKey(m_hKey);
  return   bInstalled;
}

BOOL   TestTime::GetLimitTime(CTime&   t)
{
  DWORD   dwDisposition;
  HKEY   m_hKey;
  //打开注册表
  LONG   ret   =   RegCreateKeyEx   (HKEY_LOCAL_MACHINE,   "SOFTWARE\\TimeLimit",   0L,   NULL,
    REG_OPTION_VOLATILE,   KEY_ALL_ACCESS,   NULL,   &m_hKey,   &dwDisposition);
        if   (ret   !=   ERROR_SUCCESS)         //打开注册表失败
{
RegCloseKey(m_hKey);
return   FALSE;
}
 
  //从注册表中读入试用期限数据
  DWORD   nYear,nMonth,nDay,nHour,nMinute,nSecond;
  DWORD   dwType;
  DWORD   dwLen;
  ret   =   RegQueryValueEx   (m_hKey,   "Year",   NULL,         //读取年份
    &dwType,(unsigned   char*)&nYear,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
    {
RegCloseKey(m_hKey);
return   FALSE;
}                                                
  ret   =   RegQueryValueEx   (m_hKey,   "Month",   NULL,         //读取月份
    &dwType,(unsigned   char*)&nMonth,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
  {
RegCloseKey(m_hKey);
return   FALSE;
}                                                
  ret   =   RegQueryValueEx   (m_hKey,   "Day",   NULL,         //读取天
    &dwType,(unsigned   char*)&nDay,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                              
  ret   =   RegQueryValueEx   (m_hKey,   "Hour",   NULL,         //读取小时
    &dwType,(unsigned   char*)&nHour,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
  {
RegCloseKey(m_hKey);
return   FALSE;
}                                                
  ret   =   RegQueryValueEx   (m_hKey,   "Minute",   NULL,         //读取分钟
    &dwType,(unsigned   char*)&nMinute,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                                
  ret   =   RegQueryValueEx   (m_hKey,   "Second",   NULL,         //读取秒
    &dwType,(unsigned   char*)&nSecond,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)                                                   //读取数据失败
  {
RegCloseKey(m_hKey);
return   FALSE;
}                                              
 
  //关闭注册表
  RegCloseKey(m_hKey);
  t   =   CTime(nYear,nMonth,nDay,nHour,nMinute,nSecond);
  return   TRUE;
}

BOOL   TestTime::SetLimitTime(DWORD   nYear,DWORD   nMonth,DWORD   nDay,
                                DWORD   nHour,DWORD   nMinute,DWORD   nSecond)
{
        DWORD   dwDisposition;
  HKEY   m_hKey;
  //打开注册表
  LONG   ret   =   RegCreateKeyEx   (HKEY_LOCAL_MACHINE,   "SOFTWARE\\TimeLimit",   0L,   NULL,
    REG_OPTION_VOLATILE,   KEY_ALL_ACCESS,   NULL,   &m_hKey,   &dwDisposition);
        if   (ret   !=   ERROR_SUCCESS)         //打开注册表失败
    return   FALSE;
 
  //向注册表中写入试用期限数据
  ret   =   RegSetValueEx   (m_hKey,   "Year",   NULL,             //写入年
    REG_DWORD,(CONST   BYTE*)&nYear,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败              
    {
RegCloseKey(m_hKey);
return   FALSE;
}                                            
  ret   =   RegSetValueEx   (m_hKey,   "Month",   NULL,           //写入月份
    REG_DWORD,(CONST   BYTE*)&nMonth,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败
  {
RegCloseKey(m_hKey);
return   FALSE;
}                                              
  ret   =   RegSetValueEx   (m_hKey,   "Day",   NULL,               //写入天
    REG_DWORD,(CONST   BYTE*)&nDay,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                                
  ret   =   RegSetValueEx   (m_hKey,   "Hour",   NULL,             //写入小时
    REG_DWORD,(CONST   BYTE*)&nHour,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                            
  ret   =   RegSetValueEx   (m_hKey,   "Minute",   NULL,         //读取年份数据
    REG_DWORD,(CONST   BYTE*)&nMinute,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                              
  ret   =   RegSetValueEx   (m_hKey,   "Second",   NULL,         //写入秒
    REG_DWORD,(CONST   BYTE*)&nSecond,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}        
 
  //写入特征数据
  DWORD   dwVal   =   1;
  ret   =   RegSetValueEx   (m_hKey,   "Installed",   NULL,         //写入特征值
    REG_DWORD,(CONST   BYTE*)&dwVal,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)         //写入数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                
  //关闭注册表
  RegCloseKey(m_hKey);
  return   TRUE;    
}


BOOL   TestTime::SetLimitJianGe(DWORD   nJianGe)
{
        DWORD   dwDisposition;
  HKEY   m_hKey;
  //打开注册表
  LONG   ret   =   RegCreateKeyEx   (HKEY_LOCAL_MACHINE,   "SOFTWARE\\TimeLimit",   0L,   NULL,
    REG_OPTION_VOLATILE,   KEY_ALL_ACCESS,   NULL,   &m_hKey,   &dwDisposition);
        if   (ret   !=   ERROR_SUCCESS)         //打开注册表失败
    return   FALSE;
 
  //向注册表中写入试用期限数据
  ret   =   RegSetValueEx   (m_hKey,   "JianGe",   NULL,             //写入剩下时间
    REG_DWORD,(CONST   BYTE*)&nJianGe,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)                                               //写入数据失败              
  {
RegCloseKey(m_hKey);
return   FALSE;
}
  //写入特征数据
  DWORD   dwVal   =   1;
  ret   =   RegSetValueEx   (m_hKey,   "Installed",   NULL,         //写入特征值
    REG_DWORD,(CONST   BYTE*)&dwVal,sizeof(DWORD));
        if   (ret   !=   ERROR_SUCCESS)         //写入数据失败
  {
RegCloseKey(m_hKey);
return   FALSE;
}                                
  //关闭注册表
  RegCloseKey(m_hKey);
  return   TRUE;    
}


BOOL   TestTime::GetLimitJianGe(DWORD   &nJianGe)
{
  DWORD   dwDisposition;
  HKEY   m_hKey;
  //打开注册表
  LONG   ret   =   RegCreateKeyEx   (HKEY_LOCAL_MACHINE,   "SOFTWARE\\TimeLimit",   0L,   NULL,
    REG_OPTION_VOLATILE,   KEY_ALL_ACCESS,   NULL,   &m_hKey,   &dwDisposition);
        if   (ret   !=   ERROR_SUCCESS)         //打开注册表失败
    {
RegCloseKey(m_hKey);
return   FALSE;
}
 
  //从注册表中读入试用期限数据
  DWORD   dwType;
  DWORD   dwLen;
  ret   =   RegQueryValueEx   (m_hKey,   "JianGe",   NULL,         //读取间隔
    &dwType,(unsigned   char*)&nJianGe,&dwLen);
        if   (ret   !=   ERROR_SUCCESS)             //读取数据失败
{
RegCloseKey(m_hKey);
return   FALSE;
}                                            
  //关闭注册表
  RegCloseKey(m_hKey);
  return   TRUE;
}

回答:

这是代码

回答:

↓有缘文章(随机)
返回[就爱你]首页