Windows中注册类ID:clsid

“通用唯一标识符”(UUID),用于标识 COM 组件。每个 COM 组件在 Windows 注册表中都有自己的 CLSID,以便让其他应用程序加载。

使用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。注册ActiveX控件一般来说有六种途径,它们有各自的优点,运用范围也不同。

  Regsvr32.exe注册

  Regsvr32.exe位于Windows目录的system子目录下。点击Windows的“开始→运行”菜单,在对话框中输入以下命令:

  regsvr32 netshare.ocx &&注册netshare.ocx控件

  regsvr32 /u netshare.ocx &&解除netshare.ocx控件的注册

  如果netshare.ocx文件不在system目录时,还必须在文件名前加上完整的路径。除了regsvr32应用程序之外,Microsoft在它的Web站点上还提供了一个称为regclean.exe的程序,可以检查注册表并去掉丢失的组件在注册表中的条目。regclean.exe除了可以删除“悬挂”的条目,它还提供一个“undo”文件帮助恢复错误的删除。

  卧龙传说提醒:用regsvr32.exe注册ActiveX控件虽然简单,但需要用户手工进行注册,在不用时还需手工解除注册。

  VFP环境注册

  在我们进行程序设计时,VFP本身提供一个注册ActiveX控件的方法。

  进入VFP环境,选择“工具→选项”菜单,点击“控件”页,选中“ActiveX控件”单选按钮,在列表框里显示所有已经注册的ActiveX控件,这时,点击右边的“添加”按钮,选择需要注册的ActiveX控件文件,“确定”后完成注册。也可以在表单设计器的表单控件工具栏里拖动“OLE”按钮到表单,在弹出的选择框里选中“插入控件”单选钮,同样点击右边的“添加控件”按钮,来完成新控件的注册。

  卧龙传说提醒:本方法仅适合程序员在设计程序过程中手工进行,对用户而言,并没有实现在本地机上自动注册。

  安装程序注册

  大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件的注册是较为理想的一种方案。

  在用户执行安装程序时,这些ActiveX控件将自动在用户机器上安装并注册。

  VFP7.0光盘所带的InstallShield是目前较为流行的制作安装程序的工具,使用它可以制作出专业级的Setup安装程序,还可以注册应用程序使用到的ActiveX控件。而且,在以后使用控制面板的“添加/删除程序”卸载该软件时,安装程序会自动注销掉以前注册的ActiveX控件。

  加入代码注册

  首先,定义一个注册控件的函数:

  Function MyRegsvr ( lpcRegFilename, lplIsreg )

  If File(lpcRegFilename)

  lpcRegFilename = iif(llisreg, lpcRegFilename, [ /u ] + lpcRegFilename)

  Run /n regsvr32 &&lpcRegFilename

  Endif

  Return

  Endfunc

  然后就可以通过以下语句来调用该函数,并完成ActiveX控件的注册了(卧龙传说提醒:一定要注意控件文件的路径哦)。

  = MyRegsvr( "netshare.ocx", .T.) &&注册netshare.ocx控件

  = MyRegsvr( "netshare.ocx", .F.) &&解除netshare.ocx控件的注册

  注册函数注册

  上面提到运行regsvr32.exe应用程序将弹出注册是否成功的对话框,注意看内容“DllRegisterServer in netshare.ocx succeeded”或“UnDllregisterServer...”,其实,通常每个可用的ActiveX控件都有DllRegisterServer、UnDllregisterServer这两个自注册函数包含在其中,我们可以用定义API函数的方法(Declare <函数名> in <文件名> ... )来定义它,然后直接使用该函数来进行注册和反注册。

  同样,我们先自定义一个注册函数(卧龙传说提醒:请注意DllRegisterServer、UnDllregisterServer的大小写):

  Function DllRegister (lpLibFileName,isReg)

  isReg = iif(type("isReg")="U", .T., isReg)

  lpProcName = iif(isReg, "DllRegisterServer", "DllUnregisterServer" )

  Declare INTEGER (lpProcName) in (lpLibFileName)

  return &&lpProcName.()

  Endfunc

  然后,就可以通过该函数来完成ActiveX控件的注册了。

  = DllRegister( "netshare.ocx", .T.) &&注册,返回0表示成功

  = DllRegister( "netshare.ocx", .F.) &&注销,返回0表示成功

  Clear Dlls

  试试,是不是没有了弹出框的烦恼!

  卧龙传说提醒:该方法没有对ActiveX控件文件的验证,假如该控件没有有效的DllRegisterServer功能(即不具有自注册功能),也就找不到以上的两个API函数,照样会有错误信息弹出。

  API函数注册

  此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:

  1、使用Windows API函数LoadLibrary载入ActiveX控件;

  2、使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterserver)指针;

  3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。

  上面所述的ActiveX控件注册方法各有特点。经实际使用,效果良好。您可根据实际情况灵活选用。

注册或取消注册.dll或.ocx组件

一、打开注册表      依次打开 “开始/运行”,输入“regedit”
二、添加右键注册dll组件快捷菜单     依次打开“HKEY_CLASSES_ROOR\Dllfile”,右键选择“新建项”,新建项“shell”,再其下以同样的方法新建“Register”。其中,“Register”就是对.dll或.ocx右键弹出的菜单中的选项名,再在其下建“command”,双击“默认值”将其改为“Regsvr32 %1”。
三、添加右键取消注册dll组件快捷菜单    依次打开“HKEY_CLASSES_ROOR\Dllfile\shell”,右键选择“新建项”,新建项“Unregister”。其中,“Unregister”就是对.dll或.ocx右键弹出的菜单中的选项名,再在其下建“command”,双击“默认值”将其改为“Regsvr32 %1 /u”。
四、对ocx的注册和取消注册     同理,需要注意的是把上面二和三中的“Dllfile”改为“Ocxfile”即可。

重新注册:

在DOS命令符状态下输入如下命令:
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
再运行:
for %1 in (%windir%\system32\*.dll) do regsvr32 /s %1

批量注册dll或ocx文件

------------------------------------------------------------------

批量注册system32下的dll文件

for %c in (%windir%/system32\*.dll) do regsvr32.exe /s %c

for %c in (c:\windows\system32\*.dll) do regsvr32.exe /s %c

for %c in (c:\windows\system32\*.ocx) do regsvr32.exe /s %c

for %c in (c:\windows\system32\UFCOMSQL\*.dll) do regsvr32.exe /s %c

for %c in (c:\windows\system32\UFCOMSQL\*.ocx) do regsvr32.exe /s %c

批量注册C:\U8SOFT\ufcomsql下的ocx文件

for %c in (C:\U8SOFT\ufcomsql\*.ocx) do regsvr32.exe /s %c

批量注册C:\U8SOFT\ufcomsql下的dll文件

for %c in (C:\U8SOFT\ufcomsql\*.dll) do regsvr32.exe /s %c

------------------------------------------------------------------

FOR --循环语句

% --DOS里面,变量前面都要带%

/s 静默方式,不然没注册一个dll都会弹出一个警告框,然后你要一个一个点

整个语句就是注册C:\window\system32目录下面的所有dll,这晚晚能够解决一些莫名其妙的问题

------------------------------------------------------------------

regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:

  regsvr32 [/u] [/s] [/n] [/i[:cmdline]] DLL文件名

  命令可以在“开始→运行”的文本框中,也可以事先在bat批处理文档中编写好命令。未带任何参数是注册DLL文件功能,其它参数对应功能如下:

  /u:反注册DLL文件;

  /s:安静模式(Silent)执行命令,即在成功注册/反注册DLL文件前提下不显示结果提示框。

  /c:控制端口;

  /i:在使用/u反注册时调用DllInstall;

  /n:不调用DllRegisterServer,必须与/i连用。

  单独运行regsvr32.exe程序,可以看到弹出一“No DLL name specified”的错误提示框

在64位windows7下注册:

WIN7 64位系统要把控件复制到windows\SysWOW64文件夹下,然后以管理员身份运行命令行,再进入windows\SysWOW64文件夹,运行regsvr32注册!

今天要测试一个几年前基于.NET Framework1.1做的软件在Window7下的工作情况,发现Windows7很体贴的已经默认安装了最新版的Framework3.5.1。程序跑的很顺畅,看来Win7的向下兼容性果然不错。

不过途中发现有一个用到的OCX控件还没有注册。

http://csliwei.cnblogs.com

在OCX文件所在的目录中,有一个叫做【OCX登录.bat】的批处理文件,打开一看里面只有一行命令:

regsvr32 XXX.ocx

http://csliwei.cnblogs.com

按照常理双击一下bat文件,果然出现了错误,不过这个并不出我所料,由于UAC的限制,我需要点击鼠标右键打开菜单,然后选择【以管理员权限运行】,这样就...

恩,还是错误,提示找不到这个OCX文件。bat文件和OCX文件是放在一起的,而且WinXP下的执行是没有问题的,这说明【以管理员权限运行】的时候,当前目录并不是bat文件所在的目录,所以找不到OCX文件。写成下面这样看看:

regsvr32 %~dp0XXX.ocx

参数【%~dp0】的意思就是当前目录,包括最后一个"\"符号在内,所以【%~dp0XXX.ocx】就是XXX.ocx文件的完整路径了。

http://csliwei.cnblogs.com

这下应该...呃,还是错误,提示信息告诉我【C:\Program】不是有效的路径。看来是路径【C:\Program Files】中的空格造成了麻烦。

加个双引号,变成这个样子:

regsvr32 "%~dp0XXX.ocx"

再次执行,OK了!

http://csliwei.cnblogs.com

原来很简单的一件事,在win7中就碰到了三个问题点

 1,UAC

 2,批处理文件执行的当前目录

 3,路径中是否含有非法的字符

windows7 64位下运行 regsvr32 注册ocx或者dll的方法

http://blog.csdn.net/gzcqy/article/details/6948614

6. Windows 7 is a differnt beasty (writting 32bit DLL to 64 Windows7)
- place the DLL in the c:\windows\sysWOW64 folder
- go to accessories and Command Prompt
- log on command proimpt as Administrator
- from command prompt write full pathway
- example : c:\windows\sysWOW64\Regsver32.exe c:\windows\sysWOW64\gif89.dll

ELSE :
- be sure to Unregister your half register attempts
- place an /u inbetween the regsvr32 & the file
- example : Regsver32.exe /u c:\windows\system\gif89.dll.
.
LAST :
- It may be that in the even though you register your DLL
- your 64-bit program active x controls on your 64-bit computer cannot run the 32-bit DLL anyway

转载于:https://www.cnblogs.com/yefengmeander/archive/2012/11/13/2887966.html

Register DLL and OCX相关推荐

  1. 控件注册 - 利用资源文件将dll、ocx打包进exe文件(转)

    很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样 ...

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

    一.DLL是什么        DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库.        DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可 ...

  3. VB控件注册 - 利用资源文件将dll、ocx打包进exe文件

    很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到     现在介绍一下使用资源文件,将dll.ocx打包进exe,点击直接注册的例子: ...

  4. 【软件后门】资源(dll、ocx、exe)语言切换(汉化)、图标更改

    1.资源(dll.ocx.exe)语言切换(汉化) 推荐使用工具eXeScope.exe 2.图标修改 推荐使用工具ResHacker 3.5.exe 3.区域语言修改 推荐使用工具UltraEdit ...

  5. 如何注册dll、ocx控件

    在程序集成时,有时需要对厂家提供的dll或者ocx控件进行注册.其一般操作为:开始>命令指示符(右击管理员身份运行)>regsvr32 文件路径. 比如对devocx.ocx进行注册,在F ...

  6. 金蝶 dll vbr ocx exe文件注册方法(转)

    一.DLL文件的注册  1).一般DLL文件的注册  注册方式:使用%windir%\system32\regsvr32.exe  命令方法:直在命令行运行 regsvr32.exe 完整路径\文件名 ...

  7. ATL和ActiveX做的控件.dll和.ocx最主要的区别(摘录)

    楼主是不是说用ATL做的控件和用MFC ActiveX wizard的控件有什么区别吧 依存的动态库不一样, 一个是ATL.DLL吧, 一个是MFC42.DLL. ATL开发的控件代码少,轻便,便于网 ...

  8. win10 64位注册dll ,ocx插件问题

    昨天用c++写了一个ocx插件,注册就死活注册不上,折腾了半天 1.打开C:\Windows\SysWOW64 文件夹 找到cmd  右键管理员运行 2.将你的插件或者dll放到此目录下 3.regs ...

  9. .OCX、.dll文件注册命令Regsvr32的使用

    1.打开文件,打开需要注册的OCX文件或dll文件, 2.然后根据需要进行OCX文件或DLL文件的注册和反注册 DLL.OCX注册方法--文件Regsvr32用法及情况介绍 使用过activex的人都 ...

最新文章

  1. 固件模块之间的关系 C语言里面的模块
  2. 3D目标检测深度学习方法中voxel-represetnation内容综述(三)
  3. 春节充电 | 文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归(附动图解释)...
  4. 给女朋友讲ActiveMQ是啥?
  5. Android Lambda 表达式使用实例,-
  6. 【ASP.NET】基础补习之验证控件
  7. 【Kafka】Kafka集群 动态 添加 节点 可行否
  8. 路由器的修改权限密码、还原出厂设置、备份配置文件和升级操作系统实际操作...
  9. MyBatis教程(看这一篇就够了)
  10. kmp算法题全套svp版
  11. 51单片机驱动LCD12864中文字库显示
  12. as常用固定搭配_as...as的结构和固定搭配都有什么
  13. 编写一个fun函数,该函数地功能是:统计一行字符串中单词的个数,并作为函数值返回。字符串在主函数中输入,规定所有的单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格!
  14. Habor 入门指南
  15. 微信报修小程序源码(近期维护V3.1.0)
  16. oracle招聘ocp认证,OracleOCP认证要通过哪些考试?
  17. Dva.js 入门级教学文档-1
  18. 有钱人的4种思维,掌握一种,就够翻身了
  19. XAMPP介绍、安装及使用
  20. 【RHCE】DNS域名解析服务器及正反向解析与主从同步简单配置

热门文章

  1. MySQL进阶操作之视图
  2. Python二叉树的三种深度优先遍历
  3. Redis与python交互
  4. 【opencv有趣应用】opencv + YOLOV3 + COCO数据集的简单应用
  5. 编译原理 —— 1.2 编译系统的结构(终于弄懂语法和语义的区别了!)
  6. 你应该要掌握的7种回归分析方法
  7. VC皮肤库SkinCrafter v3 4 0 0使用
  8. Javascript事件驱动编程
  9. A. Regular Bracket Sequences
  10. 以太网接口MII,RMII,SMII,GMII总线接口简介