我做了一个服务程序 可以让用户选择是否在启动OS时启动该程序类似 SQL SERVER 2000的服务管理器 
以下是部分代码
    if chkStrat.Checked then
      begin
          Reg.RootKey:=HKEY_LOCAL_MACHINE;
          if Reg.OpenKey  ('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false) then
            begin
              Reg.WriteString('ATMServer',Application.ExeName);
              Reg.CloseKey;
      end
    else
      Reg.DeleteKey('ATMServer')
但是现在的问题是删除不了这个注册表信息
请问如何解决 急 我只能给100分 麻烦大家帮帮忙 在线等 急

解决方案 »

  1.   

    自己已经解决
    应该是用DeleteValue函数
      

  2.   

    if chkStrat.Checked then
          begin
              Reg.RootKey:=HKEY_LOCAL_MACHINE;
              if Reg.OpenKey  ('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false) then
                begin
                  Reg.WriteString('ATMServer',Application.ExeName);
                  Reg.CloseKey;
          end
        else
       begin
            Reg.RootKey:=HKEY_LOCAL_MACHINE;
            Reg.OpenKey  ('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false) 
            Reg.DeleteKey('ATMServer')
          end;
      

  3.   

    不是吧,我刚试验好,还好我的够简单procedure TForm1.Button1Click(Sender: TObject);
    var
      Reg : TRegistry;
    begin
      with Reg do
      try
        Reg := TRegistry.Create;
        RootKey := HKEY_LOCAL_MACHINE;
        OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', False);
        if chkStrat.Checked then
          WriteString('ATMServer', Application.ExeName)
        else
          DeleteValue('ATMServer');
        CloseKey;
      finally
        Free;
      end;
    end;