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