TRegistry *Reg = new TRegistry;
Integer flag; //全局变量
TDate first ,last,now;
try {
Reg->RootKey = HKEY_LOCAL_MACHINE;
//如果没有运行过写入注册表运行情况
if (!Reg->KeyExists("SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset"))
{
Reg->OpenKey("SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset",true) ;
//使用写到注册表
Reg->WriteDate("FirstAccess",Date());
Reg->WriteDate("LastAccess",Date());
Reg->WriteInteger("Flag",0); //过期标志0不过期
Reg->CloseKey();
//ShowMessage("保存成功11");
}
 
更多代码参见
http://www.nzw.net.cn/www/cdsoft.nsf/topics?openform&forum=5&start=1&count=20&page=1

解决方案 »

  1.   

    完整的代码在这 
    哪位能人把翻译成DELPHI?
    TRegistry *Reg = new TRegistry;
    Integer flag; //全局变量
    TDate first ,last,now;
    try {
    Reg->RootKey = HKEY_LOCAL_MACHINE;
    //如果没有运行过写入注册表运行情况
    if (!Reg->KeyExists("SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset"))
    {
    Reg->OpenKey("SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset",true) ;
    //使用写到注册表
    Reg->WriteDate("FirstAccess",Date());
    Reg->WriteDate("LastAccess",Date());
    Reg->WriteInteger("Flag",0); //过期标志0不过期
    Reg->CloseKey();
    //ShowMessage("保存成功11");
    }else //不是第一次运行,打开注册表取出运行情况,并写入当前运行时间
    {
    Reg->OpenKey("SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset",false) ;
    first = Reg->ReadDate("FirstAccess");
    last = Reg->ReadDate("LastAccess");
    flag = Reg->ReadInteger("Flag");
    Reg->WriteDate("LastAccess",Date());
    //ShowMessage("取值成功") ;
    //根据使用情况开始动作 /////////////////////////////////////
    now=Date(); //取今天日期
    if(now.Val-first.Val >10) //限制安装后试用10天
    {
    Application->MessageBox("OA秘书系统试用到期!\n将要关闭程序...","提示",MB_OK);
    Reg->WriteInteger("Flag",1); // 1表示到期
    Reg->CloseKey();
    delete Reg;
    Application->Terminate();
    return;
    }
    if(flag==1)
    {
    Application->MessageBox("OA秘书系统试用到期!!\n程序将关闭...","提示",MB_OK);
    Reg->CloseKey();
    delete Reg;
    Application->Terminate();
    return ;
    }
    }
    }
    catch(...)
    {
    delete Reg;
    Reg = NULL;
    ShowMessage("版本控制注册失败!");
    return;
    }
    delete Reg;
    Reg = NULL;
      

  2.   

    var
       Reg:TRegistry;
       flag:integer;
       first ,last,now:TDate;
    begin
      Reg:=TRegistry.Create;
    try
      begin
        Reg.RootKey:= HKEY_LOCAL_MACHINE;
       //如果没有运行过写入注册表运行情况
       if (not Reg.KeyExists('SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset')) then
       begin
        Reg.OpenKey('SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset',true);
        //使用写到注册表
        Reg.WriteDate('FirstAccess',Date());
        Reg.WriteDate('LastAccess',Date());
        Reg.WriteInteger('Flag',0); //过期标志0不过期
        Reg.CloseKey();
        //ShowMessage('保存成功11');
       end
       else //不是第一次运行,打开注册表取出运行情况,并写入当前运行时间
         begin
           Reg.OpenKey('SYSTEM\\CurrentControlSet\\Services\\Winsock\\myset',false) ;
           first := Reg.ReadDate('FirstAccess');
           last := Reg.ReadDate('LastAccess');
           flag := Reg.ReadInteger('Flag');
           Reg.WriteDate('LastAccess',Date());
           //ShowMessage("取值成功") ;
           //根据使用情况开始动作 /////////////////////////////////////
           now:=Date(); //取今天日期
           if(now-first>10) then//限制安装后试用10天
              begin
                Application.MessageBox('OA秘书系统试用到期!\n将要关闭程序...','提示',MB_OK);
                Reg.WriteInteger('Flag',1); // 1表示到期
                Reg.CloseKey();
                Reg.Free;
                Application.Terminate();
              end;
          if(flag=1) then
             begin
               Application.MessageBox('OA秘书系统试用到期!!\n程序将关闭...','提示',MB_OK);
               Reg.CloseKey();
               FreeAndNil(Reg);
               Application.Terminate();
             end;
         end;
        end;
      except
       begin
         FreeAndNil(Reg);
         ShowMessage('版本控制注册失败!');
       end;
        FreeAndNil(Reg);
     end;
    end;