软件绿化之注册DLL

有些程序集DLL需要注册,但注册后,发生了什么,恐怕很少有人知道,是不是就把DLL复制到了系统目录下?

   注册DLL需要命令regsvr32,具体帮助可以运行 regsvr32 /?

   注册DLL发生了什么?写了注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\,那么是不是HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\下边的所有的都是DLL呢。

  不是,如果你安装了SVN的客户端工具TortoiseSVN,就会发现根本不是,TortoiseSVN把许多Common Files\TortoiseOverlays下的图片也放在了HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\,但这两种在注册表上有什么区别呢?

 区别是对应的DLL键下多了InprocServer32,那是不是不通过regsvr32也可以注册DLL呢,通过我在win7上的实验是可以的,如果使用一个和DLL自己不同的GUID会不会成功,自己没有试验

例如注册好压的DLL,下边的三条注册表修改语句就完成了注册DLL的任务,当然前提条件是你必须知道DLL的GUID,也就是说regsvr32注册DLL也就是向注册表中添加了三条记录。

 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585" /ve   /d "HaoZip Shell Extension"  /f
 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585}\InprocServer32" /ve   /d "%cd%\HaoZipExt.dll"  /f
 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585}\InprocServer32" /v "ThreadingModel"   /d "Apartment"  /f
 
 
regsvr32 HaoZipExt.dll

  有些DLL注册后,可能修改的不只是HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\,有可能修改注册表其他的位置,所以不建议直接使用注册表语句注册DLL。

  例如腾讯的有些需要注册的DLL还会修改注册表如下的位置

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\


  通过我的分析没有向系统文件夹下的System32下复制文件,至少win7没有。现在有一个问题DLL的GUID是注册时系统生成的?还是在DLL中呢?

 写过程序的人都知道GUID在DLL中,不是在注册时生成的,也就是说对于某一个固定的DLL,只要不重新生成DLL,GUID是不会改变的,不管注册多少次。当然如果重新编译生成了DLL就有可能改变了。

   通过试验,明白了,通过regsvr32注册DLL就是向注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\下写了注册表,关键是下边添加了InprocServer32项

并没有向系统文件下复制文件,GUID是保存在DLL中的,而不是注册时才生成的。

    另外需要注册的DLL其实就是com,使用一些函数到处工具会发现 , 都可以导出如下4个函数 llCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServer

在注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\下有相应的注册信息,关键是包含一个HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\DLLGUID\InprocServer32


注意:主要注册的DLL,并不一定是以DLL为后缀的,也有可能使用其他的后缀,例如ocx就是一种很常见的需要注册的DLL,从正式的角度讲需要注册的DLL都是COM,具体可以查询COM相关资料。


文章欢迎转载,但请保留作者信息
xuexiaodong2009

软件绿化的意义   第一:节省安装时间   有好多软件安装时间相当长,我安装过不少时间在八分钟甚至更多的,尤其是大型的软件,在安装的 时候总是先解压文件,换句话说,就是要释放许多东西到系统的临时文件佳里,再换句话说就是拷贝好多 临时文件先到系统里,这总浪费时间吧?然后在安装结束之后还要去删除这些文件,这又要浪费时间吧? 而我把他做成绿化版之后,解压加绿化一般也就1到2分钟。   第二:减小体积   从我的经验来看,一般绿化后重新打包的体积都比原安装版要小,大多数并减小不很多,但是也有比 较厉害的,我记得我曾经绿化过几个大块头的软件,最多的时候曾经从500M多减小到100M多(当然,可能 是删除了不少东西所导致,那是因为我觉得帮助文件一般无用,尤其是那些国外软件以及多国语言版本的 ,举个例子来说,我家的打印机是惠普1020的,驱动程序是一张光碟,体积为400m多,具体多少记不得了 ,有天打印机坏掉,光驱也坏掉,所以无法安装,于是上网去下了一个,发现有精简版的驱动,才20m多, 于是下载安装,发现可以,后来我又发现其中还是有很多无用的东西,如上所说的那些,于是进一步做了 精简,最后打包的体积为2.58m,并且经过我重装系统的检测,完全正常,由400m多,减小到2.58m,携带 传播的方便,安装时间的减少,以及安装后所占空间的减少,都充分说明了绿化在节省体积方面的巨大作 用)。   第三:节省安装后所占空间   有不少软件有这么个习惯,就是在系统复制一个备份,这也就是一些软件具有修复功能的原因了, 其实他就相当于重新覆盖安装,只不过不需要你原来的安装文件了,这当然占体积,所以绿化可以节省这 些空间。    第四:加速系统运行   注册表的臃肿很大程度上影响系统运行速度,有许多软件安装的时候很多注册表项,但是其实多 数时候并非每个都是必须的,我经常碰到导出的注册表体积有1到2M的,很恐怖吧,但是精简之后(当然不 是以损失功能为代价的。具体哪些可以精简,哪些不可以,这些主要靠经验,其次靠试验),有的甚至完 全都可以抛弃注册表文件,有的减少到屈指可数的几项,总之都能减小一些。     第五:有相当多的程序安装过程需要重新启动,很烦人,但是绿化有可能(这个不一定了)变必须启 动为绿化之后即可用。   第六:方便使用   尤其是破解还有汉化的程序,通常的过程是先安装原版,然后打汉化或者破解补丁,又麻烦了,尤其 对那些非常菜的电脑小菜来说,他都不知道怎么打补丁,绿化过程可以把这些步骤都节省掉,当汉化补丁 和破解补丁体积不小的时候,通过绿化过程同时也减小了体积。   第七:优化的方面:   大多数软件都有.inf等类似的配置文件,里面包含着所需要的参数,参数的设置对于结果有影响,而 程序安装后的默认参数一般并非就是最优参数,所以,绿化过程也可以将这些参数调整之后打包,这样用 的人就不需要再都手动调整,尤其方便那些不大的人。   第八:绿化中的汉化效果   这里又分两种情况,一种其实可以包括在第七条里的,但是另一种则不包括,所以还是独立出来说了 。   有些软件是多国语言,其中包含中文,但是安装之后首先显示的并非是中文,简单点还好说,复杂点 的英语比较好的也许也要找一才能设置成中文,更不要说英语烂的和小菜了,所以在绿化过程中将这个 语言选项设置好之后,用户可以不必再去费力的设置了,这是可以包括在第七条里的一种情况。   另一种情况是,哪怕你如此设置了,换台电脑他还是先显示的不是中文语言,我一般的做法是,打开 语言文件夹,想将除了中文和默认语言之外的所有语言删除再说(嘿嘿,知道了吧,好多体积就是这样节 省出来的),然后复制默认语言文件的名字,这个时候删除此语言文件,然后把中文文件改成那个默认语 言文件的名字,ok,达到到哪都可以直接显示中文的效果了。   第九:去除垃圾,捆绑的垃圾插件,病毒等等,很是讨厌,绿化可以去除它们。   第十:略微说一点有点跑题又跑的不远的东西,网络上有些比如说msnn绿色精简版,不精简功能也许 你绿化的成,但是如果精简功能之后你照常规的绿化方法却无论如何总是出错,就是绿化不成,这个方法 涉及到程序的修改,比较简单的一种做法就是拿exetools等资源修改工具,哪个地方出错,就把哪个模块 去掉,直到全无错误,打包,这个绿色精简版就面世了。   第十一:免注册功能   现在有些软件越做越不地道了,注册码长的都不的了。光长还好说,反正也就是一下子复制,它还偏 偏分好几段,一次无法粘贴完,也许你说你有序列号输入工具,可以一键输入,但是第一,不见得人人都 有这个工具,第二,你是不是还需要去启动那个工具呢?费事吧?我的经验是,用注册表工具监测,然后 注册成功后导出注册表,之后可以把注册表文件并到绿化过程里,这样随着绿化就一并注册了,是不是更 省事呢?此法对那些不依赖硬件标志的注册类有效,而这类软件为大多数。   第十二:其实这个应该是绿化优点的第一条,可惜我到现在才想起来,正如我做题的习惯,先把大题干 掉,然后才想起来做那最简单的,就是移动方便,如果需要移动地方,不需要再花费相当多的时候重新安 装,一般来说只需要把绿化脚本重新运行一编就可以了,省事好多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值