快捷方式/删除项/EXE自删除DIY

ok骏途成就未来

ok骏途成就未来

2016-01-29 14:11

快捷方式/删除项/EXE自删除DIY,快捷方式/删除项/EXE自删除DIY
 
每一个编程爱好者,都希望自己的作品能为大家接受和喜爱,但我们的作品大多是简单的一个EXE文件的拷贝,既不需安装也没有删除程序,让人觉得只是程序而不是产品,以下我以Delphi 为例和大家交流一下程序组快捷方式建立、添加删除程序组中的删除项和程序的自删除等功能。

  1.以下先来介绍建立程序组快捷方式的方法:

  在uses 单元中加入 shlobj,activex,comobj,在窗口中添加一个button,并在其事件中添加以下代码:






procedure TForm1.Button1Click(Sender: TObject);
var sl:ishelllink;
pf:ipersistFile;
lnkName:Widestring;
app:string;
begin
olecheck(cocreateInstance(clsid_shellLink,nil,Clsctx_inproc_server,iShellLink,sl));
pf:=sl as IPersistFile;
app:=application.exename;
OleCheck(sl.SetPath(pchar(app)));//建立有效的链接
LnkName:='C:WINDOWSStart MenuProgramsredbird.lnk'; //设置目标文件
pf.Save(PWideChar(lnkName),true); //保存文件
end;

  当然以上这段代码应放在程序第一次运行时的代码段中,而且程序组或是桌面的位置最好要以注册表 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders中的对应值为准。您对注册表的操作可通过Delphi对注册表封装了的TRegistry 来完成,此法比较简单,在此就不再赘述,如您想写出更小的程序或是您在用VB编程,那就得调用API.以下作者将以对注册表API函数的直接调用向大家介绍如何建立添加删除程序中的项目.同样,这段代码也应放在程序首次运行时执行。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)


program project1;
uses
Windows;

{$R *.RES}
type
TRegKeyInfo = record
NumSubKeys: Integer;
MaxSubKeyLen: Integer;
NumValues: Integer;
MaxValueLen: Integer;
MaxDataLen: Integer;
FileTime: TFileTime;
end;
var IHand:integer;
IKey:Hkey;
Regs: TRegKeyInfo;
begin
RegCreateKeyEx(HKEY_LOCAL_MACHINE, // 注册表根键
'SoftwareMicrosoftWindowsCurrentVersionUninstallMyApp'//你的程序项
, 0, nil,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil, IKey, @IHand);

 

[next]

RegSetValueEx(Ikey, 'DisplayName'
, 0, REG_SZ, Pchar('删除我吧!')//删除列表中显示的字符
,10); //字符长度
RegSetValueEx(Ikey, 'UninstallString',0
, REG_SZ, pchar(ParamStr(0)+' /UNINSTALL'),//删除所调用的命令行
4);
end.

  此段代码将 你的程序全路径名和"/UNINSTALL"参数写入了注册表 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstallMyApp中,你在添加删除程序中可以看到“删除我吧!”的项目,而当你点击此项目时,你的程序通过ParamStr(1)将收到"/UNINSTALL"的参数,并以此为标识调用删除程序的代码即可。以下我们再来介绍当你的程序收到此参数后,不需调用其它程序而“自删除”的两个方法。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

  其中之一是在接到此参数后动态建立一个删除文件的批处理文件,在程序内部将安装程序后生成的诸如快捷方式等文件和注册表值删除后在退出前调用此批处理文件将自己删除即可,如:


procedure TForm1.FormCreate(Sender: TObject);
var f:textfile ;//作者不建议您将删除代码放在FormCreate事件中,作者认为那将出现不能删除的可能性。
begin
AssignFile(f,'temp.bat');
Rewrite(F);
Writeln(f,'del '+paramstr(0));
Writeln(f,'del temp.bat');
closefile(f);
application.Terminate ;
winexec('temp.bat',SW_HIDE);
halt;
end;

 

  对文本文件的处理比较简单,几经摸索,作者又找到了更好的第二种方法,简单易行,直接调用命令shell即可完成删除工作:


<

展开更多 50%)
分享

猜你喜欢

快捷方式/删除项/EXE自删除DIY

Delphi
快捷方式/删除项/EXE自删除DIY

程序快捷方式/程序删除项/EXE自删除DIY

编程语言 网络编程
程序快捷方式/程序删除项/EXE自删除DIY

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

7步删除Vista快捷方式!

windows 操作系统
7步删除Vista快捷方式!

怎么恢复桌面快捷方式 显示桌面快捷方式不小心删除了怎么办

计算机应用技术
怎么恢复桌面快捷方式  显示桌面快捷方式不小心删除了怎么办

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

操作系统常见问题如何删除桌面快捷方式箭头

windows 操作系统
操作系统常见问题如何删除桌面快捷方式箭头

注册快捷方式

编程语言 网络编程
注册快捷方式

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《苍穹之剑》如何快速升级

《苍穹之剑》如何快速升级

用编程来实现24小时制到12小时制的转换

用编程来实现24小时制到12小时制的转换
下拉加载更多内容 ↓