使用 regsvr32 在 Windows 中安装和注册 DLL

使用 regsvr32 在 Windows 中安装和注册 DLL

MundoWin » 教程 » 如何在 Windows 上安装自己的 DLL 并使用 regsvr32 注册它们

Regsvr32 通过写入 CLSID 键来注册和注销 COM/ActiveX 组件。

在 Windows x64 上,System32 是 64 位,而 SysWOW64 是 32 位;使用适当的 regsvr32。

管理员权限和提升的控制台对于避免错误至关重要。

当 Windows 应用程序要求您注册 DLL 或 OCX 时,它实际上是要求您使用 COM/ActiveX 例程将其组件集成到系统中。为此,参考工具是 regsvr32,一个从命令行运行的本机系统可执行文件。虽然名称可能令人困惑,但它并非一个 32 位注册表,而是一个加载器,可以调用以下库函数: DLL注册服务器 o DLL注销服务器.

在开始之前,最好先了解两个关键点:一方面, 并非所有 DLL 都需要注册 (许多组件仅通过路径加载);另一方面,在 64 位系统上,两个版本的 regsvr32 和两个主库位置共存。这种二元性是注册组件时 90% 错误的根源。在本指南中,我们将详细回顾: 首页 > 文件 > regsvr32 是什么?、它的语法、每个版本的位置、如何以特权打开控制台、真实示例以及典型消息的解决方案。

regsvr32 是什么以及它有什么用途?

Regsvr32 是一个 控制台实用程序 在 Windows 注册表中注册和注销 OLE 控件,例如 DLL 和 ActiveX 控件 (OCX)。注册 COM 组件时,诸如 CLSID 以及应用程序和系统正确定位和加载该对象所需的其他信息。

在注册表中,您将找到具有标识符结构的条目,例如 {aabbccdd-eeff-gghh-iijj-kkllmmnnoopp},即每个对象的 CLSID。运行 regsvr32 时,库导出的函数会被内部调用,通常 DLL注册服务器 (注册)或 DLL注销服务器 (注销)。如果库还实现了 安装程序,可以通过特定选项调用。

从历史上看,Visual Basic 或 Visual FoxPro 等开发环境包含相关实用程序(例如 Regsvr.exe 和 regsvr16.exe 对于 16 位系统,使用 Regsvr32;对于 32 位系统,使用 Regsvr32。在现代 Windows 系统中,参考工具是 regsvr32.exe,集成到操作系统中。

Regsvr32 语法和参数

该实用程序接受多个选项。该命令的一般语法(如 Microsoft 参考资料中所述)如下: Regsvr32 [/u] [/n] [/i[:cmdline]]。此外,还有一种静音模式,无需交互即可实现自动化。

常用的主要选项: /u 取消注册服务器(调用 DllUnregisterServer); /i[:命令行] 使用可选参数调用 DllInstall,并与 /u 结合调用 安装程序 处于卸载模式; /n 避免调用 DllRegisterServer 并且应该与 /i 结合使用; /s 激活静音模式(无消息框)。

具有完整路径的实际示例以避免歧义: 注册员 使用正确版本的工具在 64 位 Windows 上运行 64 位 DLL:

C:\Windows\System32\regsvr32.exe C:\Windows\System32\msxml6.dll

至 注销 同一家书店:

C:\Windows\System32\regsvr32.exe /u C:\Windows\System32\msxml6.dll

您将在流程结束时看到典型的成功消息: «DLLRegisterServer 成功» 当您注册时, «DLLUnregisterServer 成功» 未注册时。如果您在静默模式下运行,则不会出现这些框。

相关: 如何设置我的 Steam 帐户使用脚本实现自动化非常有用 /s。请注意一个细节:静默模式也会隐藏错误。一些管理员会以一种未记录的方式使用 /e 使用 regsvr32 来隐藏信息性消息,但显示错误消息,这对于需要日志记录的部署非常有用。运行以下命令时,不会看到此选项 regsvr32 /?,但它在技术指南中被提及并且适用于多个版本。

Regsvr32 位置和 32/64 位体系结构

在 32 位系统上, regsvr32.exe 住在 %系统根目录%\System32。在 64 位 Windows 上有 两个版本 该工具的,区分它们很重要,因为成功注册取决于它:

版本 64 bits 在 %systemroot%\System32\regsvr32.exe,而版本 32 bits 在... %systemroot%\SysWOW64\regsvr32.exe。是的,文件夹名称是违反直觉的: System32 托管 64 位二进制文​​件,而 SysWOW64 包含 32 位二进制文​​件 在 x64 系统上。

没有可执行文件名为 regsvr64.exe. 要注册 64 位 DLL,请使用 regsvr32 System32,对于 32 位 DLL,使用 regsvr32 SysWOW64此标准也适用于控制 OCX.

如果您尝试使用 64 位工具注册 32 位 DLL,则会收到错误。在这种情况下,请根据需要将文件移动到正确的位置,并使用相应的版本运行。例如,如果 32 位 DLL 位于 %系统根目录%\System32,将其放入 %系统根目录%\SysWOW64 并注册:

%systemroot%\SysWOW64\regsvr32.exe %systemroot%\SysWOW64\

如何以管理员权限打开命令提示符

许多注册表错误是由于权限不足造成的。为了避免这种情况,请以如下方式打开提升权限的控制台: 管理员 并从那里重复该命令。不同版本的系统的操作如下:

En Windows 8.1和Windows 8:打开超级按钮栏,选择“搜索”,输入 命令提示,右键单击结果并选择 以管理员身份运行. 如果 UAC 提示,请确认或输入凭据。

En Windows 7 和 Windows Vista:单击“开始”,输入 CMD o 命令提示 在搜索框中,右键单击结果并选择 以管理员身份运行. 当出现 UAC 提示时授权。

En Windows XP中:使用属于管理员组的账户登录并打开管理员窗口。 命令提示 从开始 > 运行 > cmd。

实际操作流程及常见案例

对于 x64 环境,典型的流程是找到正确的文件夹并运行注册表。例如,使用 32 位 OCX 控件,例如 mscomctl.ocx,作品来自 SysWOW64 并使用 32 位 regsvr32。

首先, 更改目录 到预期位置:

cd C:\Windows\SysWOW64

然后,记录 OCX 控件 搭配:

regsvr32.exe mscomctl.ocx

如果一切顺利,您将看到一个框,指示: “DLLRegisterServer 在 mscomctl.ocx 中成功”。该确认表明该功能 DLL注册服务器 一切运行顺利。

但是,如果您在 64 位 Windows 上注册 32 位 DLL 时遇到典型错误,请检查文件的位置。如果您将其放在 %系统根目录%\System32,将其移动到 %系统根目录%\SysWOW64 然后再次运行:

%systemroot%\SysWOW64\regsvr32.exe %systemroot%\SysWOW64\mscomctl.ocx

当 DLL 或 OCX 已在 System32 o SysWOW64,无需指定完整路径;Windows 默认会在该路径下搜索。不过,最好使用绝对路径,以避免名称冲突。

相关: 如何将 Excel 单元格设置为厘米常见错误信息及常见解决方案

当 regsvr32 返回错误时,几乎总是由于权限或体系结构不正确而导致的。Microsoft 提供了几个故障排除步骤,您应该按以下顺序尝试。 缩小问题范围:

从提升的控制台运行 regsvr32:以管理员身份打开命令提示符并重复该命令。提升权限后,许多登录错误都会消失。

在 Windows x64 上使用 32 位版本的 regsvr32:如果库是 32 位的,则注册它 %systemroot%\SysWOW64\regsvr32.exe。如果它在 System32 中,请将其移动到 SysWOW64 并运行: %systemroot%\SysWOW64\regsvr32 .

如果本指南未解释您的具体错误,您可以查阅 TechNet 事件和错误,其中记录了相关消息、建议操作和支持链接。它是解释 regsvr32 框报告的 HRESULT 代码的有用资源。

还要记住 /s 隐藏对话框,因此如果出现问题,您可能看不到它。对于静默部署,请考虑使用未记录的参数 /e 隐藏提交,但允许显示错误。

具有图形界面的历史和替代注释

在旧的 Microsoft 文档中,该命令出现 报名注册 使用语法将 DLL 标记为系统全局 注册/S Sample.dll。请注意,程序的注册表数据仅在进程加载时才会被识别;如果您在应用程序打开的情况下发出该命令,则更改将在下次启动时生效。此外, 只有管​​理员 可以执行这样的命令。目前,在当前系统中,标准方法是使用 regsvr32.

如果你不想使用命令行,可以使用一些第三方小工具来封装这个过程。例如 图形用户界面 RegSvr32,这是一个调用底层 regsvr32 的接口,允许你通过一两次点击来注册和注销库和 ActiveX 控件。据报道,该工具并未实现所有功能(缺少以下选项: /i y /n) 并专注于 。dll文件 y .ocx,但它对于快速任务来说很舒服。

对于教育内容,有一些视频资源逐步演示了 regsvr32 的使用方法。例如, YouTube 上的 Pantallazos.es 分享有用的教程:https://www.youtube.com/c/pantallazoses。还有 系统管理员 提供实用指南:https://www.youtube.com/c/SYSADMIT。请务必检查该过程是否适合您的系统架构,以避免已知错误。

常见问题和良好做法

所有的 DLL 都需要注册吗? 不需要。许多库是通过路径或 Windows 搜索引擎加载的,不会在注册表中写入任何内容。只有那些公开 COM/ActiveX 对象或需要特定集成的库才需要注册以创建其密钥。 CLSID 和同事。

各个版本中的regsvr32在哪里? 在 32 位 Windows 上,你会发现它 %系统根目录%\System32。在 64 位 Windows 中有两个副本:64 位副本 System32 32 位版本 SysWOW64. 记住: 不存在 regsvr64.exe。

相关: 如何配置 Avaya 1608 电话我如何知道我的系统是 32 位还是 64 位? 在现代 Windows 中,您可以在“设置”>“系统”>“关于”中看到它。此外,还有一些参考文章,例如 “Windows:如何判断它是 32 位还是 64 位” 来自 SYSADMIT 的说明,其中解释了几种方法。识别体系结构对于选择正确的 regsvr32 版本至关重要。

我可以期待哪些成功或错误消息? 如果一切顺利的话,你会看到这样的通知: «DLLRegisterServer 成功»。要取消注册,框将显示 «DLLUnregisterServer 成功»如果有错误,请先记下错误代码并检查。 权限 y 建筑师事务所;如果问题仍然存在,请查阅事件和错误知识库。

/i、/n 和 /u 有什么用途? 连接器 /u 您可以通过调用 DllUnregisterServer 来取消注册该组件。 /i 您调用 DllInstall,它有时需要参数(例如 /i:用户 o /i:机器,如果组件考虑了这一点)。选项 /n 阻止调用 DllRegisterServer,并且只能与 /i 当 DLL 安装程序处理其余过程时。

我可以不展示盒子就注册吗? 如果与 /s。这对于自动化来说非常方便,但您不会看到确认或错误。或者,一些管理员使用 /e 仅抑制信息消息并查看错误消息,即使该选项未在帮助中列出。

如果我使用的是旧版 Windows 怎么办? 在 Windows XP 中, regsvr32.exe 它位于 %systemroot%\System32 中,操作步骤相同。区别在于如何以适当的权限打开控制台。在非常老旧的电脑上,可以找到该命令的参考。 报名注册 对于全局 DLL,但在当前环境中您应该使用 regsvr32。

还有其他简单的例子吗? 要使用完整路径明确注册:

%systemroot%\System32\regsvr32.exe %systemroot%\System32\

%systemroot%\SysWOW64\regsvr32.exe %systemroot%\SysWOW64\

注销 静音模式 期间 受控卸载, 您可以使用:

%systemroot%\SysWOW64\regsvr32.exe /u /s %systemroot%\SysWOW64\

如果组件支持自定义安装,您可能会看到以下情况 /i[:命令行],例如:

%systemroot%\System32\regsvr32.exe /i:machine %systemroot%\System32\

最后,如果您使用的是经典或旧版 Visual Basic,请记住,某些开发工具包包含自己的 注册服务器 辅助工具,但系统标准是 regsvr32。如果您需要视觉辅助,像上面提到的 GUI 实用程序可以简化流程,尽管 它们并不能取代所有选项 高级控制台功能。

如果应用这些技巧后仍然收到错误,请仔细检查 DLL 是否确实 导出 DllRegisterServer如果不这样做,regsvr32 将无法注册它,并会显示一条警告,提示未找到入口点。在这种情况下,该库可能不是 COM 类型,因此不应注册。

考虑到以上所有因素,在 Windows 中注册 DLL 和 OCX 就变成了一个快速的过程: 选择正确的 regsvr32 版本从提升权限的控制台运行,使用正确的语法并解释消息。不要忘记,有像 TechNet 这样的资源可以分析特定的错误,并且在部署的情况下,静默模式和日志记录脚本可以节省大量时间。

相关推荐

国内 Switch 下载游戏太慢?这 8 大实用技巧帮你提速

国内 Switch 下载游戏太慢?这 8 大实用技巧帮你提速

日博365网 10-28
阅读更多
多出一半(多出一半猜字谜是什么字)

多出一半(多出一半猜字谜是什么字)

365bet平台开户 11-26
阅读更多
新宝骏730七座价格多少钱 2021款售价7.38-10.28万元

新宝骏730七座价格多少钱 2021款售价7.38-10.28万元

365bet平台开户 09-18
阅读更多