我想系统初始化的时候,在注册表中写入一个信息,通过该信息判断用户是否注册了。
程序启动,首先检查注册表看用户是否注册了,如果没有注册则弹出注册窗口。注册完后
将信息写入注册表,以后程序就根据注册表信息检查用户是否注册过。怎么实现?在哪里写代码?

解决方案 »

  1.   

    function RegReadString(const RootKey: HKEY; const Key, Name, Def: string): string;
    var
      S: string;
      Reg: TRegistry;
    begin
      S := Def;
      Reg := TRegistry.Create;
      try
        Reg.RootKey := RootKey;
        if Reg.OpenKey(Key, False) then
          S := Reg.ReadString(Name);
      finally
        Reg.CloseKey;
        Reg.Free;
      end;
      Result := S;
    end;procedure RegWriteString(const RootKey: HKEY; const Key, Name, Value: string);
    var
      Reg: TRegistry;
    begin
      Reg := TRegistry.Create;
      try
        Reg.RootKey := RootKey;
        if Reg.OpenKey(Key, True) then
          Reg.WriteString(Name, Value);
      finally
        Reg.CloseKey;
        Reg.Free;
      end;
    end;
      

  2.   

    可以在Application.Initialize;之后写代码
      

  3.   

    我的意思不是怎么写入和读注册表,而是将代码写在哪里?form2是注册窗口。
      Reg := TRegIniFile.Create;
      try
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        if reg.KeyExists('\SOFTWARE\aa')=False then
        begin
          Reg.CreateKey('SOFTWARE\aa);
          Reg.WriteString('\Software\aa','MyApp','0');
          Form2.ShowModal;
          Exit;
        end
        else
        if reg.ReadString('\SOFTWARE\aa','MyApp',str)='0' then
          Form2.ShowModal;
      finally
        Reg.Free;
        inherited;
      end;
      

  4.   

    我写了错误说HKEY_LOCAL_MACHINE没有定义,是在工程文件里写吗?
      

  5.   

    前不久我也碰到了同样的问题,怎么搞都不行,后来,干脆把注册信息和登陆信息放在同一个Form里,程序一运行,先判断注册信息表中是否为空来决定先出现什么信息;
    if (Table1.fieldbyname('销售单位中文名称').asstring='')or(Table1.fieldbyname('注册密码').asstring='')then
    begin
      panel1.visible:=true;//注册信息
      panel2.visible:=false;//登陆口令信息
    end
    else
    begin
     panel2.visible:=true;
     Panel1.visible:=false;
    end;
    哦,在Formscreat()事件里面写代码;可以的,我相信你的意思我和要的结果一样,我现在已经达到了我要的效果,细节你再试试吧!
      

  6.   

    HKEY_LOCAL_MACHINE是定义在Windows单元里的常量,你看看你有没有引用Windows单元。
      

  7.   

    >>windofsun(太阳风) 我USES了,不是那个问题
    >>shanxia(山峡) 谢了,你的问题和我说的还有点不一样。
    我的问题是将我写的那段代码放在哪里?
    工程文件里也不行啊,在线等待急~~~,解决马上给分。谢谢
      

  8.   

    OK!搞定了,谢谢RobinHZ(熊掌),还得多看书啊!~~~~~~~~~送分了
      

  9.   

    在工程文件里了当然在
    Application.Initialize;
    Application.CreateForm(Tfrm_main, frm_main);//主窗体
    Application.CreateForm(TForm2, Form2); //注册窗口了

    Run
    ....或在主窗体的SHOW的事件中了。