使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

如果本文没有介绍您所收到的错误消息,则您可以从 TechNet 事件和错误页面获取详细的错误消息说明、推荐的操作及其他支持资源。 

摘要

Regsvr32 是一个命令行实用工具,用于注册和取消注册 OLE 控件,如在 Windows 注册表中的 DLL 和 ActiveX 控件。 Regsvr32.exe 已安装在 Windows XP 及更高版本的 Windows 中的 %systemroot%\System32 文件夹中。


注意在一个 64 位版本的 Windows 操作系统上有两个版本的 Regsv32.exe 文件:

  • 64 位版本是 %systemroot%\System32\regsvr32.exe。

  • 32 位版本是 %systemroot%\SysWoW64\regsvr32.exe。

Regsvr32 的语法命令

RegSvr32.exe 具有以下命令行选项:

Regsvr32 [/u] [/n] [/i[:cmdline]] <dllname>

/u – 取消注册服务器

/i - 调用 DllInstall,为其传递一个可选 [cmdline];当与 /u 一起使用时,可调用 dll uninstall
/n – 不调用 DllRegisterServer;此选项必须与 /i 一起使用

/s - 安静模式,不显示消息框

Regsvr32 错误的常见解决方案

当您收到 Regsvr32 错误消息时,请尝试以下一种方法:

  • 方法 1: 通过提升的命令提示符再次运行 Regsvr32 命令:要打开升级命令提示符,请执行以下步骤:

    Windows 8.1 和 Windows 8从屏幕右边缘滑入,然后点击“搜索”。 或者,如果你使用的是鼠标,请指向屏幕的右下角,然后单击“搜索”。 在搜索框中键入命令提示符,右键单击命令提示符,然后单击以管理员身份运行。 如果系统提示你输入管理员密码或进行确认,则键入密码或单击“允许”。

    Windows 7 和 Windows Vista请单击开始,在搜索框中键入命令提示符或 cmd,右键单击命令提示符,然后单击以管理员身份运行。 如果系统提示你输入管理员密码或进行确认,则键入密码或单击“允许”。

    Windows XP使用管理员账户或具有管理员权限的账户登录,然后打开命令提示符窗口。

  • 方法 2: 使用 32 位版本的 Regsvr32 在 64 位版本的 Windows 上注册 32 位 DLL如果您在 64 位版本的 Windows 上注册 32 位 DLL 时收到错误信息,请执行以下步骤:

    1. 打开提升的命令提示符。

    2. 如果 32 位 DLL 位于 %systemroot%\System32 文件夹中,请将其移动到 %systemroot%\SysWoW64 文件夹。

    3. 运行以下命令:

      %systemroot%\SysWoW64\regsvr32 <full path of the DLL>

Regsvr32 错误消息

下表包含 RegSvr32 错误消息和可能的原因:

错误消息

原因

命令标志“%1”无效。 请查看命令用法,然后重试。

在命令行中将无效的选项组合传递到 regsvr32.exe。

仅当打开 Microsoft Visual Studio OLE Activex 控件项目时,此命令才有效。

Visual Studio 调用了 Regsvr32.exe,但命令行中未指定模块。

要注册模块,必须提供一个二进制名称。

调用 Regsvr32.exe 时未在命令行中指定任何模块。

命令 OleInitialize 运行失败。 计算机可能内存不足。 请关闭任何打开的程序,然后重试。

Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。 如果尝试对 COM 库进行初始化或撤消初始化时失败,就会出现这些错误消息。

模块“%1”加载失败。\n\n请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的 .DLL 文件是否有问题。\n\n%2。

加载命令行中指定的模块时出现错误。 错误文本显示为消息的一部分。

模块“%1”已加载,但找不到入口点 %2。\n\n请确保“%1”为有效的 DLL 或 OCX 文件,然后重试。

Regsvr32.exe 无法在命令行中指定的模块中找到所需的入口点。 如果未正确从模块导出入口点或模块不是 .DLL 或 .OCX 文件时,就会发生这种情况。

模块“%1”已加载,但对 %2 的调用失败,错误代码为 %3。\n\n要获取此问题的详细信息,请将该错误代码用作搜索词进行联机搜索。

regsvr32.exe 在命令行中指定的模块中调用入口点时出错。 错误代码显示为消息的一部分。

模块“%1”可能与您正在运行的 Windows 版本不兼容。 检查该模块是否与 regsvr32.exe 的 x86 (32 位)或 x64 (64 位)版本兼容。

例如,当在 x86 计算机上运行 regsvr32.exe,并且命令行中指定的模块为 64 位模块时,可能会发生此错误。


下表包含 Regsvr32 错误消息和可能的原因:

错误消息

原因

无法识别的标志: /invalid_flag

键入的标志或开关组合无效。

没有指定 DLL 名。

您没有包含 .dll 文件名。

Dll_Name 已加载,但未发现 DllRegisterServer 或 DllUnregisterServer 入口点。

指定的 Dll 名称不是 .dll 或 .ocx 文件。 例如,键入 regsvr32 wjview.exe 就会生成该错误消息。

Dll_Name 不是一个可执行文件,没有为该文件类型注册的注册帮助程序。

指定的 Dll 名称不是可执行的文件(.exe、.dll 或 .ocx)。 例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。

Dll_Name 无法自行注册,或内存中存在已损坏的版本。

例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。 如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新解压缩该文件的原始版本。

OleInitialize 失败(或 OleUninitialize 失败)。

Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。 如果尝试对 COM 库进行初始化或撤消初始化时失败,就会出现这些错误消息。 例如,Ole32.dll 文件可能已经损坏,或者其版本有误。

LoadLibrary ("Dll_Name") 失败。 GetlastError 返回 0x00000485

从 Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND)。 这意味着“找不到运行此应用程序所需的库文件之一。” 例如,如果找不到 Missing.dll 文件,键入 regsvr32 missing.dll 后,就会返回该错误消息。

LoadLibrary ("Dll_Name") 失败。 GetLastError 返回 0x00000002

从 Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND)。 这意味着 “系统找不到指定的文件。” 换言之,系统找不到相关的 DLL。 例如,键入 regsvr32 icwdial.dll 并且缺少 Tapi32.dll(依赖项)将返回此错误消息。

LoadLibrary("dskmaint.dll")失败。 GetLastError 返回 0x000001f

从 Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE)。 这意味着“连接到系统的设备不工作”。 如果您尝试注册 Win16 .dll 文件,就会发生此现象。 例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。

Dll_Name 中的 DllRegisterServer(或 DllUnregisterServer)失败。 返回代码是: string

在 Winerror.h 文件中搜索消息中指定的字符串。


需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×