Windows 注册和取消注册一个dll或者ocx

简介: 原文: Windows 注册和取消注册一个dll或者ocx   一、DLL是什么        DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库。        DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。

原文: Windows 注册和取消注册一个dll或者ocx

 

一、DLL是什么
       DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库。
       DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。


二、OCX是什么

       OCX是OCX控件的简称。OCX控件全称为对象类别扩充组件(Object Linking and Embedding (OLE) Control eXtension)。它的作用其实和刚才谈到的DLL文件特别相像,其实所谓的OLE我们平时已经非常熟悉了,简单地说就像在Word中可以使用Excel数据,写字板中可以嵌入图片文件等等这些功能。打个比方的话,剪贴板就像是个简单的数据共享,而OLE则是一种“对象共享”。

       控件的本质是微软公司的对象链接和嵌入(OLE)标准。由于它充分利用了面向对象的优点,使得程序效率得到了很大的提高,从而得到了广泛的应用。国外有很多公司就是专门制作各种各样控件的。控件的最早形式是以.VBX的格式出现的,后来变成了.OCX。


三、为什么要注册DLL和OCX
       如果DLL文件或者OCX文件没有注册,系统注册表中就没有这个DLL文件或者OCX文件信息.那么等到调用的时候,因为不知道这个DLL文件或者OCX文件的位置,只能报告没有这个DLL或者OCX文件.所以这时候就需要注册DLL了.

       DLL文件或者OCX文件注册后会在注册表里生成该组件的唯一guid号码,程序引用的这个组件才能找到DLL或者OCX文件,才能使用该DLL或者OCX组件的功能


      【小提示】 Windows系统的DLL因为在安装时已经注册好了,因此不用注册,但是如果因为某种情况系统无法识别这些DLL文件时,还是需要我们手动再注册一遍。

三、通过命令注册或者取消注册DLL或OCX
        开始--运行--cmd,打开命令行工具。
        注册命令: regsvr32  [dll或者ocx的绝对路径]     该路径可以复制,也可以直接将ocx或者dll文件拖入cmd窗口,自动得到路径,较为方便。
        取消注册命令:regsvr32  /u [dll或者ocx的绝对路径]


四、添加右键快捷菜单来注册DLL或OCX   
        经常要注册或者取消dll与ocx,老是输入cmd命令太麻烦,于是新建两个右键快捷菜单,方便多了。 
        1、打开注册表      依次打开 “开始/运行”,输入“regedit” 
        2、添加右键注册dll组件快捷菜单     依次打开“HKEY_CLASSES_ROOT\Dllfile”,右键选择“新建项”,新建项“shell”(如果已经有了则不用新建),再在其下以同样的方法新建“Register”。其中,“Register”就是对.dll或.ocx右键弹出的菜单中项名,再在其下建“command”,双击“默认值”将其改为“Regsvr32 %1”。
        3、添加右键取消注册dll组件快捷菜单    依次打开“HKEY_CLASSES_ROOR\Dllfile\shell”,右键选择“新建项”,新建项“Unregister”。其中,“Unregister”就是对.dll或.ocx右键弹出的菜单中的选项名,再在其下建“command”,双击“默认值”将其改为“Regsvr32 %1 /u”。
        4、对ocx的注册和取消注册     同理,需要注意的是把上面2和3中的“Dllfile”改为“Ocxfile”即可。 
        5、桌面F5刷新。找一个dll或者ocx文件,右键试一下吧。多方便!

        6、郑重声明:该方法对路径中有空格的失效,比如路径名中包含C:/Program Files的。只能通过cmd命令搞定。(通过添加双引号已解决,如)

              [HKEY_CLASSES_ROOT\Dllfile\shell\Register DLL\Command]
              @="Regsvr32 %1"

             改为

             [HKEY_CLASSES_ROOT\Dllfile\shell\Register DLL\Command] 
             @="Regsvr32 \"%1\"

        7、至于删除右键菜单,在注册表删除对应项即可

注:也可以复制以下文件到记事本,然后保存成.reg文件执行即可

添加右键菜单

 

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Dllfile\shell\Register DLL\Command]
	@="Regsvr32 %1"
[HKEY_CLASSES_ROOT\Dllfile\shell\UnRegister DLL\Command]
	@="Regsvr32 /u %1"
[HKEY_CLASSES_ROOT\Ocxfile\shell\Register OCX\Command]
	@="Regsvr32 %1"
[HKEY_CLASSES_ROOT\Ocxfile\shell\UnRegister OCX\Command]
	@="Regsvr32 /u %1"
Windows Registry Editor Version 5.00  
  
[HKEY_CLASSES_ROOT\Dllfile\shell\Register DLL\Command]  
    @="Regsvr32 \"%1\""  
[HKEY_CLASSES_ROOT\Dllfile\shell\UnRegister DLL\Command]  
    @="Regsvr32 /u \"%1\""  
[HKEY_CLASSES_ROOT\Ocxfile\shell\Register OCX\Command]  
    @="Regsvr32 \"%1\""  
[HKEY_CLASSES_ROOT\Ocxfile\shell\UnRegister OCX\Command]  
    @="Regsvr32 /u \"%1\""  


删除右键菜单

 

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Dllfile\shell\]
[-HKEY_CLASSES_ROOT\Ocxfile\shell\]



目录
相关文章
|
5月前
|
存储 Java C语言
Windows 下 JNI 调用动态链接库 dll
Windows 下 JNI 调用动态链接库 dll
141 0
|
2月前
|
XML C# 数据格式
绝密档案曝光!Windows平台如何深挖一个dll背后的神秘依赖,揭露隐藏的秘密!
【8月更文挑战第14天】在Windows系统中,动态链接库(DLL)对程序运行至关重要。了解DLL的依赖关系有助于软件的调试与优化。本文以具体案例演示如何查看DLL依赖。首先确保环境已安装Windows及具备基本开发知识。
43 0
|
4月前
|
Java Nacos 微服务
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
|
5月前
|
存储 Java C++
Windows 下 JNA 调用动态链接库 dll
Windows 下 JNA 调用动态链接库 dll
107 0
|
5月前
|
监控 安全 API
7.2 Windows驱动开发:内核注册并监控对象回调
在笔者上一篇文章`《内核枚举进程与线程ObCall回调》`简单介绍了如何枚举系统中已经存在的`进程与线程`回调,本章`LyShark`将通过对象回调实现对进程线程的`句柄`监控,在内核中提供了`ObRegisterCallbacks`回调,使用这个内核`回调`函数,可注册一个`对象`回调,不过目前该函数`只能`监控进程与线程句柄操作,通过监控进程或线程句柄,可实现保护指定进程线程不被终止的目的。
78 0
7.2 Windows驱动开发:内核注册并监控对象回调
|
10月前
|
网络协议 安全 API
9.9 Windows驱动开发:内核远程线程实现DLL注入
在笔者上一篇文章`《内核RIP劫持实现DLL注入》`介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过`NtCreateThreadEx`这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中未被导出使用时需要首先得到该函数的入口地址,`NtCreateThreadEx`函数最终会调用`ZwCreateThread`,本章在寻找函数的方式上有所不同,前一章通过内存定位的方法得到所需地址,本章则是通过解析导出表实现。
130 0
9.9 Windows驱动开发:内核远程线程实现DLL注入
|
5月前
|
XML Arthas Java
Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启
Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启
330 0
|
11月前
|
开发者 Windows
什么是 Windows 操作系统 DLL 文件的 Side-by-Side Assemblies 技术
什么是 Windows 操作系统 DLL 文件的 Side-by-Side Assemblies 技术
|
11月前
|
API UED Windows
什么是 Windows 操作系统的 DLL 文件
什么是 Windows 操作系统的 DLL 文件
|
11月前
|
Unix Linux C#
使用 ABAP + OLE 消费 Windows DLL 文件里的代码和服务
使用 ABAP + OLE 消费 Windows DLL 文件里的代码和服务