以下是我找的让软件随Windows一起启动的代码。procedure TForm1.FormCreate(Sender: TObject);
begin
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true);
  reg.WriteString('6331905',application.ExeName);
  reg.CloseKey;
  reg.Free;
end;
//以下的代码是什么意思?把'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'下写入‘6331905’为干什么还要写下面的代码?如果不写下面的代码能实现随Windows一起启动吗?
procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  reg.OpenKey('SOFTWARE\6331905',True)
  reg.WriteInteger('7788',0);//这个有什么用呢
  reg.CloseKey;
  reg.Free;
  MessageDlg('Successful!',mtinformation,[mbOk],0);
end;我想把把'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'下的‘6331905’删除,写如下的代码为什么总是找不到‘6331905’?
但注册表里确实是有‘6331905’,删除掉这个是不是软件就不随Windows一起启动了?
procedure TForm1.RzBitBtn2Click(Sender: TObject);
begin 
  reg:=TRegistry.Create;
  try
    with reg do
      begin
        RootKey:=HKEY_LOCAL_MACHINE;
        OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
        if KeyExists('6331905')then//用F7跟踪,到这步就不往下走了,直接到end,然后就finally,找不着'6331905'
          if Deletekey('6331905')then
            MessageDlg('已经删除!',mtInformation,[mbOK],0);
      end;
  finally
  reg.Free;
  end;
end;请各位高手帮个忙啊,谢谢谢谢啊!

解决方案 »

  1.   

    应该不写,可以自动运行的,你可以自己这么写试试
    我这还有个别的自启动的代码,M_SUBNAME为软件中文名称function SetAppAtStart(bSet:Boolean):BOOL;
    var
      key : HKEY;
      ret : integer;
      chg : DWORD;
      AppStr : String;
    begin
      result := false;
      key := 0;
      ret := RegCreateKeyEx(
          HKEY_LOCAL_MACHINE,
          APP_KEY_START,
          0,Nil,REG_OPTION_NON_VOLATILE,
          KEY_ALL_ACCESS,
          Nil,key,@chg);
      if (ret<>ERROR_SUCCESS) or (key=0) then exit;
      try
        if not bSet then begin
          RegDeleteValue(key,M_SUBNAME);
        end
        else begin
          AppStr := ParamStr(0);
          RegSetValueEx(key,M_SUBNAME,0,REG_SZ,PChar(AppStr),Length(AppStr));
        end;
        result := true;
      finally
        RegCloseKey(key);
      end;
    end;
      

  2.   


            if KeyExists('6331905')then//用F7跟踪,到这步就不往下走了,直接到end,然后就finally,找不着'6331905' 
              if Deletekey('6331905')then 
                MessageDlg('已经删除!',mtInformation,[mbOK],0); 按照你的代码来理解,,6331905是一个值value,而不是一个键Key,所以不应用KeyExists,而是用 ValueExists        if ValueExists('6331905')then//用 ValueExists,不应用KeyExists,
              if Deletekey('6331905')then 
                MessageDlg('已经删除!',mtInformation,[mbOK],0); 
      

  3.   

    呵呵,建议楼主再复习一下注册表组织及其操作方式,很多人刚开始使用注册表的时候,会将Key,Value这两种值分不清
    简单说来Key是一个文件夹,Value是key文件夹下的文件在Regedit.exe中,
    右击-新建-"项":就是创建一个Key
    右击-新建-"字符串值"/"二进制值"/"DWORD值":就是创建一个value
      

  4.   

    if Deletekey('6331905')then 
                MessageDlg('已经删除!',mtInformation,[mbOK],0); 这个也得改一下
    if DeleteValue('6331905')then 
                MessageDlg('已经删除!',mtInformation,[mbOK],0);