⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsuperuserunit.pas

📁 DELPHI 下远程控制源码
💻 PAS
📖 第 1 页 / 共 4 页
字号:
                  if TheKeyInfo.RegData=rdBinary Then
                   begin
                      TheKeyVInfos.Add('REG_BINARY');
                      TheKeyVInfos.Add('BINARY DATA..');
                   end else
                    begin
                       TheKeyVInfos.Add('Unknown');
                       TheKeyVInfos.Add('Unknown');
                    end;
            end else
            begin
              TheKeyVInfos.Add('Unknown');
              TheKeyVInfos.Add('no info !');
            end;                 
           end;
         end; 
         try
           AThread.Connection.WriteInteger(Length(TheKeyNames.Text));
           AThread.Connection.WriteStrings(TheKeyNames);
           AThread.Connection.WriteInteger(Length(TheKeyVInfos.Text));
           AThread.Connection.WriteStrings(TheKeyVInfos);
         except
           TheKeyNames.Free;
           TheKeyValues.Free;
           TheKeyVInfos.Free;
           Reg.CloseKey;
           exit;
         end;
      end else
      begin    
        try     
           AThread.Connection.WriteInteger(0);
           AThread.Connection.Writeln('');
           AThread.Connection.WriteInteger(0);
           AThread.Connection.Writeln(''); 
        except
           TheKeyNames.Free;
           TheKeyValues.Free;
           TheKeyVInfos.Free;
           Reg.CloseKey;
           exit;
        end;
      end;
      TheKeyNames.Free;
      TheKeyValues.Free;
      TheKeyVInfos.Free;
      Reg.CloseKey;
   end;
  //================================================------------end 1 
  if TheRegCMD='注册表值修改' then //执行注册表值修改命令---------------2
  begin
     try
       TheValueName:=AThread.Connection.ReadLn(EOL);
       TheNewValue :=AThread.Connection.ReadLn(EOL);
       TheValueType:=AThread.Connection.ReadLn(EOL);
     except
       exit;
     end;

     LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '修改:'+TheKey+'=?='+TheValueName+'='+TheNewValue);
     LetSingle2.Leave; 
     
     if Reg.OpenKey(TheKey, True) then //打开键
     begin
         if TheValueName='(默认)' then
         begin
           try
              Reg.WriteString('',TheNewValue); 
           except
             try
              AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程执行拒绝写操作!');
             except
             end;
             Reg.CloseKey;
             exit;             
           end;           
         end else
         begin
           if TheValueType='REG_DWORD' then
           begin
              try
                Reg.WriteInteger(TheValueName,StrToInt(TheNewValue));
              except
               try
                AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程执行拒绝写操作!');
               except
               end;
               Reg.CloseKey;
               exit;                
              end;
           end else           
             if TheValueType='REG_BINARY' then
             begin
               try
                AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程还不支持此操作!');
               except
               end;
               Reg.CloseKey;
               exit;
             end else
             begin
              try
               Reg.WriteString(TheValueName,TheNewValue);
              except
                try
                 AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程执行拒绝写操作!');
                except                 
                end;
                Reg.CloseKey;
                exit;                 
              end              
             end;
         end;
         try
          AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程命令已经执行!');
         except         
         end;
         Reg.CloseKey;
      end else
      begin
       try
        AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
       except
       end;
      end;       
  end;
  //================================================------------end 2 
  if TheRegCMD='注册表值删除' then //执行注册表值删除命令---------3
  begin
    try
     TheValueName:=AThread.Connection.ReadLn(EOL);
    except
      exit
    end;
    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '删除键值'+TheKey+'=?='+TheValueName);
    LetSingle2.Leave; 
     if Reg.OpenKey(TheKey, True) then //打开键
     begin
       if TheValueName='(默认)' then
       begin
         try
          if Reg.DeleteValue('') then     
           AThread.Connection.WriteLn(DateTimeToStr(Now)+
                                   '删除命令已经成功执行!') else
             AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程删除失败!');
         except
           Reg.CloseKey;  
           exit;           
         end;
       end else
       begin
        try
         if Reg.DeleteValue(TheValueName) then     
           AThread.Connection.WriteLn(DateTimeToStr(Now)+
                                   '删除命令已经成功执行!') else
             AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程删除失败!');
        except
           Reg.CloseKey;
           exit;
        end;
       end;
       
       Reg.CloseKey;
     end else
     begin
      try
        AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
      except
      end;
     end;     
  end;
  //================================================------------end 3 
  if TheRegCMD='注册表值改名' then //执行注册表值改名命令---------4
  begin
    try
      TheValueName:=AThread.Connection.ReadLn(EOL);
      TheNewVName :=AThread.Connection.ReadLn(EOL);
    except
      exit;
    end;
    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '键值改名:'+TheKey+'=?='+TheValueName+'->'+TheNewVName);
    LetSingle2.Leave; 
    
    if Reg.OpenKey(TheKey, True) then //打开键
     begin
        try
         if TheValueName='(默认)' then
           AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程改名被拒绝!')
         else
         begin
           Reg.RenameValue(TheValueName,TheNewVName);
           AThread.Connection.WriteLn(DateTimeToStr(Now)+'表值改名命令已成功执行!'); 
         end;
        except
        end;
       Reg.CloseKey;
     end else
     begin
       try
         AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
       except
       end;
     end;    
  end;
  //==============================----------------------end---4
  if TheRegCMD='表值STR创建' then //执行注册表字符串值创建命令---------5
  begin
    try
     TheNewVName :=AThread.Connection.ReadLn(EOL);
    except
     exit;
    end;

    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '创建字符串值:'+TheKey+'=?='+TheNewVName);
    LetSingle2.Leave;
    
     if Reg.OpenKey(TheKey, True) then //打开键
     begin
       Try
        Reg.WriteString(TheNewVname,'尚未赋值'); //要异常处理
        AThread.Connection.WriteLn(DateTimeToStr(Now)+'键值创建命令已成功执行!'); 
       except
         try
          AThread.Connection.WriteLn('注册表键值'+TheNewVName+'创建失败!'); 
         except
         end;
       end;
       Reg.CloseKey;        
     end else
     begin
       try
         AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
       except
       end;
     end;     
  end;
  //==============================--------------------------------end---5

  if TheRegCMD='表值DWD创建' then //执行注册表双字节值创建命令---------6
  begin
    try
     TheNewVName :=AThread.Connection.ReadLn(EOL);
    except
     exit;
    end;

    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '创建双字节值:'+TheKey+'=?='+TheNewVName);
    LetSingle2.Leave;
    
     if Reg.OpenKey(TheKey, True) then //打开键
     begin
       Try
        Reg.WriteInteger(TheNewVname,0); //要异常处理
        AThread.Connection.WriteLn(DateTimeToStr(Now)+'键值创建命令已成功执行!'); 
       except
        try
          AThread.Connection.WriteLn('注册表键值'+TheNewVName+'创建失败!'); 
        except
        end;        
       end;
       Reg.CloseKey;         
     end else
     begin
       try
         AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
     
       except
       end;
     end;
  end;
  //==============================--------------------------------end---6
  if TheRegCMD='表值BIN创建' then //执行注册表二进制值创建命令---------7
  begin
    try
     TheNewVName :=AThread.Connection.ReadLn(EOL);
    except
     exit;
    end;

    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '创建二进制值:'+TheKey+'=?='+TheNewVName);
    LetSingle2.Leave;
    
     if Reg.OpenKey(TheKey, True) then //打开键
     begin
       Try
        Reg.WriteBinaryData(TheNewVname,TheBuffer,SizeOf(TheBuffer)); 
        AThread.Connection.WriteLn(DateTimeToStr(Now)+'键值创建命令已成功执行!'); 
       except
        try
          AThread.Connection.WriteLn('注册表键值'+TheNewVName+'创建失败!'); 
        except
        end;
       end;
       Reg.CloseKey;         
     end else
     begin
       try
         AThread.Connection.WriteLn(DateTimeToStr(Now)+'远程键名打开失败或无效!');
       except
       end;
     end
  end;
  //==============================--------------------------------end---7
  if TheRegCMD='键项创建' then //执行注册表键项创建命令-----------------8
  begin
     try
      TheNewKey :=AThread.Connection.ReadLn(EOL);
     except
       exit
     end;
     
     LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '创建新键项:'+TheKey+'=?='+TheNewKey);
     LetSingle2.Leave;
     
     Reg.Access:=KEY_ALL_ACCESS;  
     if not Reg.OpenKey(TheKey+'\'+TheNewKey, False) then //打开键
     begin  
       try    
        if Reg.CreateKey(TheKey+'\'+TheNewKey) then
         AThread.Connection.WriteLn(DateTimeToStr(Now)+
                                  '创建命令已成功执行!')  else
        AThread.Connection.WriteLn('注册表键项'+TheKey+'\'+TheNewKey+'创建失败!');
       except
       end;        
     end else
     begin
       try
         AThread.Connection.WriteLn('远程键项'+TheKey+'\'+TheNewKey+'已经存在!');
       except
       end;
       Reg.CloseKey; 
     end;      
  end;
  //==============================--------------------------------end---8
  if TheRegCMD='键项删除' then //执行注册表键项删除命令-----------------9
  begin
     LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '删除键项:'+TheKey);
     LetSingle2.Leave;
  
     Reg.Access:=KEY_ALL_ACCESS;  
     if Reg.OpenKey(TheKey, False) then //打开键
     begin 
       try     
        if Reg.DeleteKey(TheKey) then
        AThread.Connection.WriteLn(DateTimeToStr(Now)+
                                  '键项删除命令已成功执行!')  else
        AThread.Connection.WriteLn('注册表键项'+TheKey+'删除失败!');
       except
       end;
       Reg.CloseKey;
     end else
     begin
       try
        AThread.Connection.WriteLn('远程键项'+TheKey+'不存在!');
       except
       end;
     end;
  end;
  //==============================--------------------------------end---9
  if TheRegCMD='键项重命名' then //执行注册表键项重命名命令------------10
  begin
    try
     TheNewKey :=AThread.Connection.ReadLn(EOL);
    except
     exit;
    end;

    LetSingle2.Acquire; //登记日志
       RegUserOperation(AThread,'超级用户','注册表',
                '重命名键项:'+TheKey+'-->'+TheNewKey);
    LetSingle2.Leave;
     
     Reg.Access:=KEY_ALL_ACCESS;  
     if not Reg.OpenKey(TheKey+'\'+TheNewKey, False) then //打开键
     begin      
       try            
          Reg.MoveKey(TheKey,TheNewKey,True);
          AThread.Connection.WriteLn(DateTimeToStr(Now)+
                                           '重命名命令已成功执行!');           
       except
         try
          AThread.Connection.WriteLn('注册表键项'+TheKey+'\'+TheKey+'重命名失败!');
         except
         end;
       end; 
     end else
     begin
       try
         AThread.Connection.WriteLn('远程键项'+TheKey+'\'+TheNewKey+
                               '已经存在,重命名执行失败');
       except
       end;
       Reg.CloseKey;
     end;
  end;
  //==============================-----------------------------end---10

  finally
    Reg.Free;
  end;
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -