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

📄 regunit.~pas

📁 DELPHI 下远程控制源码
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:
unit RegUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, ImgList,Registry, Menus, Buttons,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,IdGlobal,
  ToolWin;

type
  TRegFm = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    PageControl2: TPageControl;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    ImageList1: TImageList;
    StatusBar1: TStatusBar;
    StatusBar2: TStatusBar;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N10: TMenuItem;
    PopupMenu2: TPopupMenu;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    PopupMenu3: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    MenuItem10: TMenuItem;
    PopupMenu4: TPopupMenu;
    MenuItem11: TMenuItem;
    MenuItem12: TMenuItem;
    MenuItem13: TMenuItem;
    MenuItem14: TMenuItem;
    MenuItem15: TMenuItem;
    MenuItem16: TMenuItem;
    MenuItem17: TMenuItem;
    MenuItem18: TMenuItem;
    RegTCPClient: TIdTCPClient;
    Panel1: TPanel;
    Panel5: TPanel;
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    ListView1: TListView;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    ToolButton4: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    Panel6: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Panel7: TPanel;
    TreeView2: TTreeView;
    Splitter2: TSplitter;
    ListView2: TListView;
    ToolBar2: TToolBar;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ToolButton19: TToolButton;
    ToolButton20: TToolButton;
    ToolButton21: TToolButton;
    ToolButton22: TToolButton;
    ToolButton23: TToolButton;
    procedure TreeView1DblClick(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure N19Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N20Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure TreeView2DblClick(Sender: TObject);
    procedure MenuItem11Click(Sender: TObject);
    procedure ListView2DblClick(Sender: TObject);
    procedure MenuItem17Click(Sender: TObject);
    procedure MenuItem18Click(Sender: TObject);
    procedure MenuItem13Click(Sender: TObject);
    procedure MenuItem14Click(Sender: TObject);
    procedure MenuItem15Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure MenuItem9Click(Sender: TObject);
    procedure MenuItem10Click(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
    procedure ListView1Click(Sender: TObject);
    procedure TreeView2Click(Sender: TObject);
    procedure ListView2Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
       //下面是本地的注册表交互操作函数
    procedure GetSubTreeNode(TheTV:TTreeView;TheNode:TTreeNode;
                             TheLV:TListView; TheRoot,TheKey:String);
    procedure  DoValueModify(TheRoot,TheKey,TheValues:String);
    procedure  DoValueDelete(TheRoot,TheKey,TheValues:String);
    procedure  DoValueRename(TheRoot,TheKey,TheValues:String);
    procedure  DoNameDelete(TheRoot,TheKey:String);
    procedure  DoNameRename(TheRoot,TheKey,TheName:String);
    procedure  DoNameCreate(TheRoot,TheKey:String);
    procedure  DoStringValueCreate(TheRoot,TheKey:String);
    procedure  DoDWordValueCreate(TheRoot,TheKey:String);
    procedure  DoBinaryValueCreate(TheRoot,TheKey:String);
       //下面是远程注册表的交互操作函数
    procedure GetRemoteSubNode(TheTV:TTreeView;TheNode:TTreeNode;
                               TheLV:TListView; TheRoot,TheKey:String);
    procedure DoRemoteVModify(TheRoot,TheKey:String;TheVLI:TListItem);
    procedure DoRemoteVDelete(TheRoot,TheKey:String;TheVLI:TListItem);
    procedure DoRemoteVRename(TheRoot,TheKey:String;TheVLI:TListItem);
    procedure DoRemoteNewStrV(TheRoot,TheKey:String);
    procedure DoRemoteNewDWDV(TheRoot,TheKey:String);
    procedure DoRemoteNewBINV(TheRoot,TheKey:String);
    procedure DoRemoteNewKey(TheRoot,TheKey:String);
    procedure DoRemoteKeyDelete(TheRoot,TheKey:String);
    procedure DoRemoteKeyRename(TheRoot,TheKey:String);
        
  end;

var
  RegFm: TRegFm;

implementation

uses Unit1,RegEditUnit;

{$R *.dfm}

procedure TRegFm.DoRemoteKeyRename(TheRoot,TheKey:String);
var
   TheNewKeyName : String;
   EchoStr     : string;
begin
   TheNewKeyName:=InputBox('请输入新键键名:','重命名为:  ',TheKey);
   if TheNewKeyName=TheKey then exit;
   if TheNewKeyName='' then exit;

   //发送远程命令序列
  try
      RegTCPClient.WriteLn('注册表');
      RegTCPClient.WriteLn('键项重命名');     //发送注册表操作的命令
      RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
      RegTCPClient.WriteLn(TheKey);         //发送键项名-----2
      RegTCPClient.WriteLn(TheNewKeyName);  //发送新键项名---3
  except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   //=============读取信息反馈
   EchoStr:=RegTCPClient.ReadLn(EOL);
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;
procedure TRegFm.DoRemoteKeyDelete(TheRoot,TheKey:String);
var
   EchoStr     : string;
begin
   EchoStr:='真要删除键项'+TheKey+'吗?';
   if Application.MessageBox(PChar(EchoStr),'删除确认',
                    MB_OKCANCEL+MB_ICONWARNING)<>IDOK then exit;

   //发送远程命令序列
   try
       RegTCPClient.WriteLn('注册表');
       RegTCPClient.WriteLn('键项删除');     //发送注册表操作的命令
       RegTCPClient.WriteLn(TheRoot);        //发送根目录名-------1
       RegTCPClient.WriteLn(TheKey);         //发送删除键项-------2   
       //=============读取信息反馈
       EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;
procedure TRegFm.DoRemoteNewKey(TheRoot,TheKey:String);
var
   TheNewVName : String;
   EchoStr     : string;
begin
   TheNewVName:=InputBox('请输入新键键名:','新建名称:  ','新值名#1');
   if TheNewVName='新值名#1' then exit;
   if TheNewVName='' then exit;

   //发送远程命令序列
   try
      RegTCPClient.WriteLn('注册表');
      RegTCPClient.WriteLn('键项创建');     //发送注册表操作的命令
      RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
      RegTCPClient.WriteLn(TheKey);         //发送键名-------2
      RegTCPClient.WriteLn(TheNewVName);    //发送新键值名---3
      //=============读取信息反馈
      EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;
procedure TRegFm.DoRemoteNewBINV(TheRoot,TheKey:String);
var
   TheNewVName : String;
   EchoStr     : string;
begin
   TheNewVName:=InputBox('请输入新二进制值名:','新建名称:  ','新值名#1');
   if TheNewVName='新值名#1' then exit;
   if TheNewVName='' then exit;

   //发送远程命令序列
   try
      RegTCPClient.WriteLn('注册表');
      RegTCPClient.WriteLn('表值BIN创建');  //发送注册表操作的命令
      RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
      RegTCPClient.WriteLn(TheKey);         //发送键名-------2
      RegTCPClient.WriteLn(TheNewVName);    //发送新键值名---3
      //=============读取信息反馈
      EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;
procedure TRegFm.DoRemoteNewDWDV(TheRoot,TheKey:String);
var
   TheNewVName : String;
   EchoStr     : string;
begin
   TheNewVName:=InputBox('请输入新双字节值名:','新建名称:  ','新值名#1');
   if TheNewVName='新值名#1' then exit;
   if TheNewVName='' then exit;

   //发送远程命令序列
   try
      RegTCPClient.WriteLn('注册表');
      RegTCPClient.WriteLn('表值DWD创建'); //发送注册表操作的命令
      RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
      RegTCPClient.WriteLn(TheKey);         //发送键名-------2
      RegTCPClient.WriteLn(TheNewVName);    //发送新键值名---3
      //=============读取信息反馈
      EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;
procedure TRegFm.DoRemoteNewStrV(TheRoot,TheKey:String);
var
   TheNewVName : String;
   EchoStr     : string;
begin
   TheNewVName:=InputBox('请输入新字符串值名:','新建名称:  ','新值名#1');
   if TheNewVName='新值名#1' then exit;
   if TheNewVName='' then exit;

   //发送远程命令序列
   try
      RegTCPClient.WriteLn('注册表');
      RegTCPClient.WriteLn('表值STR创建'); //发送注册表操作的命令
      RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
      RegTCPClient.WriteLn(TheKey);         //发送键名-------2
      RegTCPClient.WriteLn(TheNewVName);    //发送新键值名---3
      //=============读取信息反馈
      EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION); 
end;

procedure TRegFm.DoRemoteVRename(TheRoot,TheKey:String;TheVLI:TListItem);
var
   TheNewValue:string;
   EchoStr:String;   
begin
   TheNewValue:=InputBox('请输入新名:','键值改名',TheVLI.Caption);
   if TheNewValue=TheVLI.Caption then exit;
   //发送远程命令序列
   try
       RegTCPClient.WriteLn('注册表');
       RegTCPClient.WriteLn('注册表值改名'); //发送注册表操作的命令
       RegTCPClient.WriteLn(TheRoot);        //发送根目录名---1
       RegTCPClient.WriteLn(TheKey);         //发送键名-------2
       RegTCPClient.WriteLn(TheVLI.Caption); //发送值名-------3
       RegTCPClient.WriteLn(TheNewValue);    //发送新值-------4
       //=============读取信息反馈
       EchoStr:=RegTCPClient.ReadLn(EOL);
   except
       Beep;
       SpeedButton2.Down:=True;
       RegTCPClient.Disconnect;
       StatusBar1.Panels[0].Text:='网络断开!';
       StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
       exit;
   end;
   Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION);   
end;

procedure TRegFm.DoRemoteVDelete(TheRoot,TheKey:String;TheVLI:TListItem);
var
   TheMsg1:string;
   EchoStr:String;   
begin
   TheMsg1:='真要删除:'+TheVLI.Caption+'='+TheVLI.SubItems[1];
   if Application.MessageBox(PChar(TheMsg1),'删除确认',
                              MB_OKCANCEL+MB_ICONWARNING)=IDOK then
   begin
     try
        RegTCPClient.WriteLn('注册表');
        RegTCPClient.WriteLn('注册表值删除'); //发送注册表操作的命令
        RegTCPClient.WriteLn(TheRoot);        //发送根目录名
        RegTCPClient.WriteLn(TheKey);         //发送键名
        RegTCPClient.WriteLn(TheVLI.Caption); //发送值名
        //=============读取信息反馈
        EchoStr:=RegTCPClient.ReadLn(EOL);
     except
        Beep;
        SpeedButton2.Down:=True;
        RegTCPClient.Disconnect;
        StatusBar1.Panels[0].Text:='网络断开!';
        StatusBar1.Panels[1].Text:='数据传输错误,网络已经断开!';
        exit;
     end;
      Application.MessageBox(PChar(EchoStr),'远程反馈',
                                        MB_OK+MB_ICONINFORMATION);   
   end;
end;
procedure TRegFm.DoRemoteVModify(TheRoot,TheKey:String;TheVLI:TListItem);
var
   EchoStr:String;
begin
  //=============================================初始化操作
  if TheVLI.SubItems[0]='REG_DWORD' then
  begin
          RegEditFm.Edit1.Text:=TheVLI.Caption;
          RegEditFm.Edit2.Text:=TheVLI.SubItems[1];
          RegEditFm.Tag:=0;
          RegEditFm.Caption:='编辑双字节值';          
  end else
   if TheVLI.SubItems[0]='REG_BINARY' then
   begin
          RegEditFm.Edit1.Text:=TheVLI.Caption;
          RegEditFm.Edit2.Text:=TheVLI.SubItems[1];
          RegEditFm.Tag:=0;
          RegEditFm.Caption:='编辑二进制值'; 
          Application.MessageBox('对不起,此版本还不具备此项功能!',
                                 '远程反馈',MB_OK+MB_ICONINFORMATION);
          exit;
   end else
    begin
          RegEditFm.Edit1.Text:=TheVLI.Caption;
          RegEditFm.Edit2.Text:=TheVLI.SubItems[1];
          RegEditFm.Tag:=0;
          RegEditFm.Caption:='编辑字符串值';           
    end;
  //======================================================
  RegEditFm.Tag:=0;  

⌨️ 快捷键说明

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