delphi删除注册表键值

sbandli 2008-12-17 10:39:03
我在系统开始--运行里面,输入了REGSVR32 *.DLL控件。怎么用DELPHI把注册表的*.DLL这个文件的注册信息删除呢?还有怎么用DELPHI再来注册*.DLL文件。不需要按钮事件,只是放在FORM窗体上一打开就自己运行就好了!
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcgboy 2008-12-18
  • 打赏
  • 举报
回复
晕,楼上正解。本以为我还有机会。

所有com都有这四个导出函数
DllGetClassObject
DllCanUnloadNow
DllRegisterServer
DllUnregisterServer

其中DllRegisterServer为注册com是所调用的函数,DllUnregisterServer为反注册是所调用的函数。
regsvr32 实际上也是调用这两个函数来实现com的注册和反注册的。所以,在delphi中反注册的话,只需调用DllUnregisterServer即可
僵哥 2008-12-17
  • 打赏
  • 举报
回复
技术问题怎么发到非技术区?
unit DLLMain;

interface
uses
windows,sysutils;
(*注册*)
function DLLReg(const FileName:PChar):Boolean;export;stdcall;
(*反注册*)
function DLLUnReg(const FileName:PChar):Boolean;export;stdcall;
type
DLLRegProc=function :HResult;
implementation
(*注册*)
function DLLReg(const FileName:PChar):Boolean;export;stdcall;
var
lib: THandle;
func:TFarProc;
DLLRegProcL:DLLRegProc;
begin
Result:=false;
if not FileExists(FileName) then exit;
lib := LoadLibrary(PChar(FileName));
if(lib=0) then exit;
try
func:=GetProcAddress(lib,'DllRegisterServer');
if not Assigned(func) then exit;
DLLRegProcL:=DLLRegProc(func);
Result:=DLLRegProcL=S_OK;
finally
FreeLibrary(lib);
end;
end;

(*反注册*)
function DLLUnReg(const FileName:PChar):Boolean;stdcall;
var
lib: THandle;
func:TFarProc;
DLLRegProcL:DLLRegProc;
begin
Result:=false;
if not FileExists(FileName) then exit;
lib := LoadLibrary(PChar(FileName));
if(lib=0) then exit;
try
func:=GetProcAddress(lib,'DllUnregisterServer');
if not Assigned(func) then exit;
DLLRegProcL:=DLLRegProc(func);
Result:=DLLRegProcL=S_OK;
finally
FreeLibrary(lib);
end;
end;

end.
JeffChung 2008-12-17
  • 打赏
  • 举报
回复
REGSVR32 *.dll /u
就是卸载

一般在安装程序时运行一个脚本注册就好了,在程序里做你每次打开程序都要去检测浪费

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧