WinCMD 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作为入口。主要用于获取模块句柄。下面是其实现方式
1 2 3 4 5 6 7 | 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
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报