请教一个大家都会的问题??????(100分)

  • 主题发起人 主题发起人 chatop
  • 开始时间 开始时间
C

chatop

Unregistered / Unconfirmed
GUEST, unregistred user!
本人最近在写一个注册表程序。程序如下
unit Unit1;

interface

uses
; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
; ExtCtrls, ComCtrls, Menus, StdCtrls, TFlatButtonUnit, TFlatGroupBoxUnit,jpeg,
; TFlatCheckBoxUnit, TFlatPanelUnit, TFlatMemoUnit,registry;

type
; TForm1 = class(TForm)
; ; Panel1: TPanel;
; ; bar: TStatusBar;
; ; Panel2: TPanel;
; ; MainMenu1: TMainMenu;
; ; N1: TMenuItem;
; ; X1: TMenuItem;
; ; Panel3: TPanel;
; ; FlatButton1: TFlatButton;
; ; FlatButton2: TFlatButton;
; ; FlatButton3: TFlatButton;
; ; FlatButton4: TFlatButton;
; ; FlatButton5: TFlatButton;
; ; FlatButton6: TFlatButton;
; ; FlatButton7: TFlatButton;
; ; FlatButton8: TFlatButton;
; ; FlatButton9: TFlatButton;
; ; FlatGroupBox1: TFlatGroupBox;
; ; FlatGroupBox2: TFlatGroupBox;
; ; Timer1: TTimer;
; ; FlatGroupBox3: TFlatGroupBox;
; ; FlatGroupBox4: TFlatGroupBox;
; ; FlatGroupBox5: TFlatGroupBox;
; ; FlatGroupBox6: TFlatGroupBox;
; ; FlatGroupBox7: TFlatGroupBox;
; ; FlatGroupBox8: TFlatGroupBox;
; ; FlatGroupBox9: TFlatGroupBox;
; ; Image1: TImage;
; ; FlatCheckBox1: TFlatCheckBox;
; ; FlatCheckBox2: TFlatCheckBox;
; ; FlatCheckBox3: TFlatCheckBox;
; ; FlatCheckBox5: TFlatCheckBox;
; ; FlatCheckBox6: TFlatCheckBox;
; ; FlatCheckBox7: TFlatCheckBox;
; ; FlatCheckBox8: TFlatCheckBox;
; ; FlatPanel1: TFlatPanel;
; ; FlatCheckBox9: TFlatCheckBox;
; ; FlatCheckBox10: TFlatCheckBox;
; ; FlatCheckBox11: TFlatCheckBox;
; ; FlatCheckBox12: TFlatCheckBox;
; ; FlatCheckBox13: TFlatCheckBox;
; ; FlatMemo1: TFlatMemo;
; ; Label1: TLabel;
; ; procedure FlatButton1Click(Sender: TObject);
; ; procedure FlatButton2Click(Sender: TObject);
; ; procedure Timer1Timer(Sender: TObject);
; ; procedure FlatButton3Click(Sender: TObject);
; ; procedure FormCreate(Sender: TObject);
; ; procedure FlatButton4Click(Sender: TObject);
; ; procedure FlatButton5Click(Sender: TObject);
; ; procedure FlatButton6Click(Sender: TObject);
; ; procedure FlatButton7Click(Sender: TObject);
; ; procedure FlatButton8Click(Sender: TObject);
; ; procedure FlatButton9Click(Sender: TObject);
; private
; ; { Private declarations }
; public
; reg:tregistry; //YAI木马,爱虫病毒
; space:string;
; ; { Public declarations }
; end;

var
; Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FlatButton1Click(Sender: TObject); ;//本机信息
begin

image1.visible:=false;
flatgroupbox1.visible:=true;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox1.height:=286;
flatgroupbox1.width:=416;
flatgroupbox1.top:=2;
flatgroupbox1.left:=6;
flatgroupbox1.visible:=true;
bar.Panels.Items[1].Text:= space+'显示出本机的信息以代参考';
end;

procedure TForm1.FlatButton2Click(Sender: TObject); ;//桌面菜单优化
begin
;image1.visible:=false;
;flatgroupbox1.visible:=false;
;flatgroupbox2.visible:=true;
;flatgroupbox3.visible:=false;
;flatgroupbox4.visible:=false;
;flatgroupbox5.visible:=false;
;flatgroupbox6.visible:=false;
;flatgroupbox7.visible:=false;
;flatgroupbox8.visible:=false;
;flatgroupbox9.visible:=false;
;flatgroupbox2.height:=286;
flatgroupbox2.width:=416;
flatgroupbox2.top:=2;
flatgroupbox2.left:=6;
;bar.Panels.Items[1].Text:= space+'桌面菜单的优化有利于更好的使用电脑';

end;

procedure TForm1.Timer1Timer(Sender: TObject); ; ; //状态栏中显示时间
begin
bar.Panels.Items[0].text:='日期:'+ datetostr(now);
panel3.caption:=' '+'Thank You For Use Chatop Software';
end;

procedure TForm1.FlatButton3Click(Sender: TObject); //网络系统优化
begin
image1.visible:=false;
flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=true;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox3.width:=416;
flatgroupbox3.height:=286;
flatgroupbox3.left:=6;
flatgroupbox3.top:=2;
bar.Panels.Items[1].Text:= space+'使您上网的速度大大提升';
end;

procedure TForm1.FormCreate(Sender: TObject); ; ; //状态栏显示文字
begin
image1.left:=16;
image1.height:=281;
image1.top:=8;
image1.width:=401;
space:=' ; ; ; ; ; ; ; ; ';
bar.Panels.Items[1].text:=space+'关于注册表优化!'end;

procedure TForm1.FlatButton4Click(Sender: TObject); ; ;// ; 开机优化
begin
image1.visible:=false;
;flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=true;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox4.width:=416;
flatgroupbox4.height:=286;
flatgroupbox4.left:=6;
flatgroupbox4.top:=2;
bar.Panels.Items[1].Text:= space+'加快开机速度';
end;

procedure TForm1.FlatButton5Click(Sender: TObject);// ;系统安全优化
begin
;image1.visible:=false;
;flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=true;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox5.width:=416;
flatgroupbox5.height:=286;
flatgroupbox5.left:=6;
flatgroupbox5.top:=2;
;bar.Panels.Items[1].Text:= space+'去除系统的不安全隐患';
end;

procedure TForm1.FlatButton6Click(Sender: TObject);//个性设置
begin
; image1.visible:=false;
; flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=true;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox6.width:=416;
flatgroupbox6.height:=286;
flatgroupbox6.left:=6;
flatgroupbox6.top:=2;
bar.Panels.Items[1].Text:= space+'使您的计算机更加个性更加于众不同';
end;

procedure TForm1.FlatButton7Click(Sender: TObject); ;// 安全限制
begin
; ;image1.visible:=false;
; ;flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=true;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=false;
flatgroupbox7.width:=416;
flatgroupbox7.height:=286;
flatgroupbox7.left:=6;
flatgroupbox7.top:=2;
bar.Panels.Items[1].Text:= space+'不想让别人使用您的电脑吗?试试这个吧!';
end;

procedure TForm1.FlatButton8Click(Sender: TObject); ;//IE修改精灵
begin
; ;image1.visible:=false;
; ;flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=true;
flatgroupbox9.visible:=false;
flatgroupbox8.width:=416;
flatgroupbox8.height:=286;
flatgroupbox8.left:=6;
flatgroupbox8.top:=2;
bar.Panels.Items[1].Text:= space+'去掉讨厌的IE病毒,还IE一个真正的面目';
end;

procedure TForm1.FlatButton9Click(Sender: TObject); //木马克星
//var
; ; ; ;{ Batterieanzeige:string; ;//YAI木马
; ; ; ; MSKernel32:string; ; ; ; //爱虫病毒
; ; ; ; NetSpy:string;//NetSpy木马
; ; ; ; Notepad:string;//backdoor木马 ; }
begin
image1.visible:=false;
flatgroupbox1.visible:=false;
flatgroupbox2.visible:=false;
flatgroupbox3.visible:=false;
flatgroupbox4.visible:=false;
flatgroupbox5.visible:=false;
flatgroupbox6.visible:=false;
flatgroupbox7.visible:=false;
flatgroupbox8.visible:=false;
flatgroupbox9.visible:=true;
flatgroupbox9.width:=416;
flatgroupbox9.height:=286;
flatgroupbox9.left:=6;
flatgroupbox9.top:=2;
bar.Panels.Items[1].Text:= space+'木马克星,克死常见木马';
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/RunServices',false);
if bool(reg.readstring('Batterieanzeige'))=true then
begin
if messagebox(0,'发现YAI木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
reg.DeleteKey('Batterieanzeige');
flatmemo1.Lines.Add('发现YAI木马,但已被清除');
reg.CloseKey ;
reg.free;
end
else
flatmemo1.Lines.Add('发现YAI木马,清除工作被用户终止');
//reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('没有发现YAI木马');
//reg.closekey;
reg.Free;
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/Run',false);
if bool(reg.readstring('MSKernel32')) then //判断MSKernel32键值是否存在
begin
if messagebox(0,'发现爱虫木病毒,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
reg.deletekey('MSKernel32');
flatmemo1.lines.add('发现爱虫病毒,但已被清除');
reg.CloseKey ;
reg.free;
end
else
flatmemo1.lines.add('发现爱虫病毒,清除工作被用户终止');
reg.free;
end
else
flatmemo1.lines.add('没有发现爱虫病毒');
reg.CloseKey ;
reg.free;
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('SOFTWARE/Microsoft/Windows/CurrentVersion/Run',false);
if bool(reg.readstring('NetSpy')) then
begin
if messagebox(0,'发现NetSpy木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
reg.deletekey('NetSpy');
flatmemo1.Lines.add('发现NetSpy木马,但已被清除');
reg.CloseKey ;
reg.free;
end
else
flatmemo1.lines.add('发现NetSpy木马,清除工作被用户终止');
reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('没有发现NetSpy木马');
reg.closekey;
reg.free;
reg:=tregistry.Create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/Run',false);
if bool(reg.readstring('Notepad')) then
begin
if messagebox(0,'发现BackDoor木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
reg.deletekey('Notepad');
flatmemo1.lines.add('发现BackDoor木马,但已被清除');
reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('发现BackDoor木马,清除工作被用户终止');
reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('没有发现BackDoor木马');
reg.closekey;
reg.free;
reg:=tregistry.Create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/RunServices',false);
if bool(reg.readstring('umgr32.exe')) then
begin
if messagebox(0,'发现BO2000木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
reg.deletekey('umgr32.exe');
flatmemo1.lines.add('发现BO2000木马,但已被清除');
reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('发现BO2000木马,清除工作被用户终止');
reg.closekey;
reg.free;
end
else
flatmemo1.lines.add('没有发现BO2000木马');
reg.closekey;
reg.free;
end;

end.

现阶段写到“木马克星”这部分,出现点问题,我想各位大鸟们应该都知道。
问题是这样的,我通过注册中的键值来得知是否电脑被种上了木马。如果被种上,那么就删除
那个关键的键值使木马不起作用。现在可以找到木马的键值,也会急时报警,可就是在删除时会
出问题。
问题是这样的,当找到木马键值时,程序就会询问是否清除木马,这时不管按是还是按否都会有问题
出现。
按是:Access violation at address 2000EDC2. Read of address 2000EDC2.出现这样的信息出错
按否:External exception C000001D.出现这样信息的问题
我不知所措,看看程序好像没错,看看机子好像没病。这倒低是怎么回事呢?就情问大家了!!
小弟先在这里谢过了!!!!
 
可惜我不会
 
先收藏了再看!
 
if bool(reg.readstring('umgr32.exe')) then
; ReadString 返回的是String,不是boolean

reg.deletekey('umgr32.exe');
;//在deletekey时,我想可能需要先OPen它??
if messagebox(0,'发现BO2000木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
看上面的,如果选择是,reg.free将被执行几次??
 
reg:=tregistry.Create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/RunServices',false);//打开
if bool(reg.readstring('umgr32.exe'))=true then//这个应该可以判断键值是否存在
begin
if messagebox(0,'发现BO2000木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin//如果按是。。。。。。。。
reg.deletekey('umgr32.exe');//删除这个键值
flatmemo1.lines.add('发现BO2000木马,但已被清除');//然后在memo1中显示内容
reg.closekey;//关掉reg
reg.free;//释放reg
end
else//如果用户按否就。。。。。。
flatmemo1.lines.add('发现BO2000木马,清除工作被用户终止');
reg.closekey;//关掉reg
reg.free;//释放reg
end//结束处理
else//如果没找到
flatmemo1.lines.add('没有发现BO2000木马');
reg.closekey;
reg.free;
end;


我想应该是对的呀,不知道大家有何高见!
 
我也没说你上面的一定不能用bool
只是这样,
if Length((reg.readstring('umgr32.exe'))>0 then//这个应该可以判断键值是否存在
....


else//如果用户按否就。。。。。。
flatmemo1.lines.add('发现BO2000木马,清除工作被用户终止');
reg.closekey;//关掉reg
reg.free;//释放reg
老兄,else语句在它的下一句就结束了,这时,你即使是按yes,,下面的两句还将
被执行,而他们已经在Yes里处理过了,把某一变量Free两次是什么结果,不错怪了。

你不能在这里设个断点吗,看看到底怎么走??
 
还是听不太懂不过没关系先送分!
你能说明白一点吗?
比如怎样才能不出错.
因为小弟DELPHI是初学不太了解DELPHI里面的语法规则所以常常会出错,肯请大哥指点.
谢谢
 
lvxq,你的意思是说:
reg.deletekey('umgr32.exe');//删除这个键值
flatmemo1.lines.add('发现BO2000木马,但已被清除');//然后在memo1中显示内容
reg.closekey;//关掉reg
reg.free;//释放reg
end
else//如果用户按否就。。。。。。
flatmemo1.lines.add('发现BO2000木马,清除工作被用户终止');
//reg.closekey;//关掉reg(已不用)?????????
//reg.free;//释放reg(已不用)?????????
end//结束处理
else//如果没找到
flatmemo1.lines.add('没有发现BO2000木马');
//reg.closekey;//(已不用)????????
//reg.free;//(已不用)???????
end;
 
reg:=tregistry.Create; ; //Create
reg.rootkey:=HKEY_LOCAL_MACHINE; ; //root Key
if ;reg.openkey('Software/Microsoft/Windows/CurrentVersion/RunServices',false) then
; ; //这句才需要判断,是否打开
begin
; ; ; ; ReturnString:=reg.readstring('umgr32.exe')
; ; ; ; ; ; if RetunString='' ;then//这个应该可以判断键值是否存在
; ; ; ; ; ; ; ; begin
; ; ; ; ; ; ; ; ; ; if messagebox(0,'发现BO2000木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
; ; ; ; ; ; ; ; ; ; ; ;begin//如果按是。。。。。。。。
; ; ; ; ; ; ; ; ; ; ; ; ; reg.deletekey('umgr32.exe');//删除这个键值
; ; ; ; ; ; ; ; ; ; ; ; ; flatmemo1.lines.add('发现BO2000木马,但已被清除');//然后在memo1中显示内容
; ; ; ; ; ; ; ; ; ; ; ; ; reg.closekey;//关掉reg
; ; ; ; ; ; ; ; ; ; ; ; ; reg.free;//释放reg
; ; ; ; ; ; ; ; ; ; ; ; end
; ; ; ; ; ; ; ; ; ; ;else//如果用户按否就。。。。。。
; ; ; ; ; ; ; ; ; ; ; ; ;begin ////////////这里加入begin ...End ; ; ; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; flatmemo1.lines.add('发现BO2000木马,清除工作被用户终止');
; ; ; ; ; ; ; ; ; ; ; ; ; ; reg.closekey;//关掉reg
; ; ; ; ; ; ; ; ; ; ; ; ; ; reg.free;//释放reg
; ; ; ; ; ; ; ; ; ; ; ; ;end;//结束处理 MessageBox
; ; ; ; ; ; ; end ; //if FindKey ; ;
; ; ; ; ; ; ; else//如果没找到
; ; ; ; ; ; ; ; ;begin
; ; ; ; ; ; ; ; ; ;flatmemo1.lines.add('没有发现BO2000木马');
; ; ; ; ; ; ; ; ; ;reg.closekey;
; ; ; ; ; ; ; ; ; ;reg.free;
; ; ; ; ; ; ; ; ;end;
.....
跟VB不同的是,属于if,或者else的超过一句以上的话,用begin...End
无需endif语句
; ; ; ; ; ;
; ;在 Delphi 中:
; ; ; ; ; ; if i>3 then
; ; ; ; ; ; ; ; i:=i-1; ;//只在i>3时执行
; ; ; ; ; ; ; ; i:=i*2; ;//不管i是否大于3,此句都被执行
; ;在VB中:
; ; ; ; ; ; if i>3 then
; ; ; ; ; ; ; ; i=i-1
; ; ; ; ; ; ; ; i=i*2
; ; ; ; ; ; endif
;
 
好像注释有点不对,不过大致就这样吧,你设一个断点,然后按F8单步执行,就能
发现问题了
 
是不是这样子呀>
还是不行呀!
不知道为什么~
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('Software/Microsoft/Windows/CurrentVersion/RunServices',false);
if bool(reg.readstring('Batterieanzeige'))=true then
begin
if messagebox(0,'发现YAI木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
begin
; ; ; ; reg.DeleteKey('Batterieanzeige');
; ; ; ; flatmemo1.Lines.Add('发现YAI木马,但已被清除');
; ; ; ; reg.CloseKey ;
; ; ; ; reg.free;
; ; ; ; end
; ; ; ; else
; ; ; ; begin
; ; ; ; flatmemo1.Lines.Add('发现YAI木马,清除工作被用户终止');
; ; ; ; reg.closekey;
; ; ; ; reg.free;
end
else
begin
; ; ; ; flatmemo1.lines.add('没有发现YAI木马');
; ; ; ; reg.closekey;
; ; ; ; reg.Free;
end;
 
var
; ;ReturnString:String;

......

reg:=TRegistry.Create; ;//运行时在这里设断点,只要鼠标在句子其
//前面的小点点击,让它变红
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('Software/Microsoft/Windows/CurrentVersion/RunServices',false) then
begin
;flatmemo1.Lines.Add('根本没有这个键,你找什么?');
;exit; ;
end;
; ; ;ReturnString :=reg.readstring('Batterieanzeige');
; ; ;if ReturnString='' then ; ;//没找到'Batterieanzeige'
; ; ; ;begin
; ; ; ; ; ;if MessageBox(0,'发现YAI木马,是否要清除?','病毒提示',MB_yesno+MB_iconquestion)=idyes then
; ; ; ; ; ; ;begin
; ; ; ; ; ; ; ; reg.DeleteKey('Batterieanzeige');
; ; ; ; ; ; ; ; flatmemo1.Lines.Add('发现YAI木马,但已被清除');
; ; ; ; ; ; ; ; reg.CloseKey ;
; ; ; ; ; ; ; ; reg.free;
; ; ; ; ; ; ; ; exit; ;做完了,回去
; ; ; ; ; ; ;end
; ; ; ; ; ; ;else
; ; ; ; ; ; ; begin ; ; ; ; ;//用户按了NO ; ;
; ; ; ; ; ; ; ;flatmemo1.Lines.Add('发现YAI木马,清除工作被用户终止');
; ; ; ; ; ; ; ;reg.closekey;
; ; ; ; ; ; ; ;reg.free;
; ; ; ; ; ; ; end
; ; ; else ; // Return String <>''
; ; ; ; begin
; ; ; ; flatmemo1.lines.add('没有发现YAI木马');
; ; ; ; reg.closekey;
; ; ; ; reg.Free;
; ; ; ; end;

......
........

把上面的话,不要改,我前面给你了,你怎么还自己瞎改啊
记得定义RetursString
再看看什么出错
 
出错我查了是在 ; else ; // Return String <>''
时出错的我也看不出那里有错呀!
我起初以为是下面的程序问题然后就把楼上的代码新建了一个工程试试也是这样不知道是为什么!!!
!!晕呀!
怎么那么麻烦!~
 
不好意思,漏了一个end;因为我这里没delphi,抱歉
再来:
; ;.....
;....

; ; ; ; ; ; ; ;reg.free;
; ; ; ; ; ; ; end
; ; ; else ; // Return String <>''
; ; ; ; begin
; ; ; ;
改成

; ; ; ; ; ; ; ;reg.free;
; ; ; ; ; ; ; end; ; ; ; //这里插入一行
; ; ; ; ; ;end
; ; ; else ; // Return String <>''
; ; ; ; begin
; ; ; ;
 
这样可能还不行下面的代码不会执行了看来我还得自己好好看看!
 
·根本没有这个键,你找什么?·
你的memo上显示了上面的内容吗??
你的这段程序是要求在注册表中有内容的即
//HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunServices/
下有你要的内容 比如 umgr32.exe 和 Batterieanzeige
你看懂了吗,程序??
 
是这样的,你可能误解了我的意思.
听我和你说我的目的:
我的程序这个单元是用来查杀木马的.我现在有一些资料,关于木马所在注册表位置和可以
查杀的方法.于是我想通过编程的方法来实现他
我的思路是这样的,很简单就是找到后删除
1.在uses中加入registry;
2.public中定义全局变量,reg:tregistry;
3.初使化,reg:=tregistry.create;
4.根目录设定,reg.rootkey:='***********';
5.打开木马所在的主键,reg.openkey('******/****/***/****',false);//这个主键肯定是存在的.
6.然后判断这个主键下是否有木马的特殊键值.我用的方法是(pd算是定义过了宝义成bool) pd:=bool(reg.readstring('木马'));
7.判断pd是否为true如果为true 那么就跳出一个messagebox说有木马是否清除
8.用户在messagebox按得是'是'键.那么就清除,并在flatmemo1中显示相应在内容
9.如果用户在messagebox上按得是否那么就不清除,并在flatmemo1中显示相应在内容
10.如果上面的都不成立,那么也就是说没有种木马了那么就在flatmemo1中显示相应在内容
然后依次类推在一个button中写上很多木马的清除方法.
不知道是不是我想思路就是错的所以没有成功????
请lvxq大哥帮我看看吧.小弟先说声谢谢了!!!
 
你的思路没问题,
既然这样,那第6条就没问题了,前提是你必须保证下面几点
1。你的函数 pd这部分要没问题
2。该键确实是用writestring,或writeexpandstring写入的,也就是说,你得保证
; readstring 不会出错,
有一点值得商量的事是Reg得定义,你既然把它定义成了全局变量,你就没必要每次
去清除它,以避免你连续调用得出错
因为
; ;reg:=TRegistry.creat;
; ......
; ;reg.free
...
; reg:=TRegistry.creat;
我不知道它会不会出错,但在我过去的印象中这事不行的。你可以这样
每次只关闭而不清除,也就是说
在Form的Load事件中
; ;reg:=TRegistry.Create;
;...
在你的Button 中别创建,也别删除,只有OpenKey和CloseKey等,别有
; ;reg:=TRegistry.Create;
; 和
; reg.free;

在你的Form Close事件中
;reg.free

另外,如果你对某一段程序的执行不太有把握,请加入保护代码
如;
; ; try
; ; ; ;reg.Root:=".......";
; ; ; ;Reg.OpenKey(..........,false);
; ; except
; ; ; ;Form1.flatMemo1.Lines.Add('发生什么错误了。。。。');
; ; end;
 
后退
顶部