ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WinCMD Regsvr32

2020-05-22 11:57:50  阅读:265  来源: 互联网

标签:控件 xxx WinCMD dll Regsvr32 注册 组件 regsvr32


Regsvr32命令用于注册COM组件,是Windows系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。

WinXP及以上系统的regsvr32.exe在windows\system32文件夹下;2000系统的regsvr32.exe在winnt\system32文件夹下。

1、语法
  regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname 其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。

2、参数

  • /u  反注册控件
  • /s  指定 regsvr32 安静运行,在成功注册/反注册DLL文件的前提下不显示结果提示框。
  • /n  指定不调用 DllRegisterServer。此选项必须与 /i 共同使用。
  • /i:cmdline  调用 DllInstall 将它传递到可选的 [cmdline]。在与 /u 共同使用时,它调用 dll 卸载。
  • dllname  指定要注册的 dll 文件名。
  • /?  在命令提示符显示帮助。

3、执行方法

  • 1、可以在“开始”--“运行”,调出运行的对话框,也可以使用Win+R热键,然后直接在输入栏输入即可
  • 2、在开始--运行 输入cmd,调出‘命令提示符’窗口,然后再执行regsvr32命令。
    • 例:c:\regsvr32 schmmgmt.dll


4、组件注册
注册一个组件使用regsvr32 xxx.dll命令。其中DLL(即xxx.dll)输出四个函数。DllGetClassObject,DllRegisterServer,DllUnregisterServer和DllMain。下面简单介绍这四个函数的用途

  • DllGetClassObject用于返回classfactory对象指针,classfactory用于创建组件实例,详情参看《COM技术内幕》
  • DllRegisterServer由词义看出其用于注册组件,在windows的注册表中给某个dll的登记。注意DLL(xxx.dll)内部包含一个或多个组件。regsvr32 -s xxx.dll即regsvr32调用xxx.dll中的此函数完成组件的注册。多说一句,注册是为了能够索引到xxx.dll然后创建组件。
  • DllUnregisterServer 在windows的注册表中取消某个dll的登记
  • DllMain:c++程序有一个main函数作为程序入口,windows程序使用WinMain作为程序入口,Dll使用的是DllMain作为入口。主要用于获取模块句柄。下面是其实现方式
BOOL APIENTRY DllMain(HINSTANCE hModule,DWORD dwReason, void* lpReserved)
{
if(dwReason==DLL_PROCESS_ATTACH)
{
g_hModule=hModule;
}
}

可以看到,DllMain将模块句柄保存到一个全局g_hModule中,以供DllregisterServer和DllUnregisterServer使用



使用Regsvr32的好处:

  注册控件:自动根据系统的位数(64/32),注册到相应位置,程序方便调用。

 

 

创建时间:2020.05.22

 

标签:控件,xxx,WinCMD,dll,Regsvr32,注册,组件,regsvr32
来源: https://www.cnblogs.com/guorongtao/p/12936273.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有