狂热的软件爱好者,大多碰到过这样的情况:装过的程序删除或卸载后,有的在“添加/删除程序”中留有残留项,很是不爽!虽然可以用Regedit.exe打开
注册表,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”,来删除残留的信息,我不知道你怎么样,反正我是感到有点烦,于是我一怒之下,就来个一劳永逸,遍了下面这个程序来解决这个问题,虽然市面上有些软件也能解决这个
问题,但是它需要我的钞票,因此还是自己来吧,另外,用自己的
程序解决问题会有很大的成就感:)
程序的界面如下:
虽然有点简陋,但实用的很(有点王婆卖瓜),
程序在Win2000 Pro SP2下用Delphi6.0企业版完成,运行于本机的WinME下也没问题,下面结合原代码与各位交流一下,不过别笑我呀!
{Unit1的代码:}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry, StdCtrls, Buttons, CheckLst; //Registry为后加上的
type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
SFSC: TBitBtn;
Sc: TBitBtn;
Bf: TBitBtn;
Dr: TBitBtn;
procedure SFSCClick(Sender: TObject);//是否删除
procedure ScClick(Sender: TObject);//删除
procedure BfClick(Sender: TObject);//注册表备份
procedure DrClick(Sender: TObject);//导入备份
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure Createparams(Var Params:TCreateParams);override;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Createparams(var Params:TCreateParams); {保证本程序总在窗口最上层,可供你别的程序借鉴两个相同功能的
程序碰到一块,谁先运行,谁在下面}
var wndParnet:HWND;
begin
Inherited CreateParams(Params);
With Params do
begin
EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES;
wndParnet:=GetDesktopWindow;
end;
end;
procedure TForm1.SFSCClick(Sender: TObject); // 看看是否删除
var
intIndex:integer;
registryTemp:TRegistry;
stringTemp:TStrings;
RunFile:string;
begin
checkListBox1.Clear;
registryTemp:=TRegistry.Create;
stringTemp:=TStringList.Create;
with registryTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey(''SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'',false) then
GetKeyNames(stringTemp);
CloseKey;
end;
for intIndex:= 0 to stringTemp.Count-1 do
CheckListBox1.Items.Add(stringTemp.Strings[intIndex]);
regist