📄 regunit.~pas
字号:
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 + -