注册comdlg32.dll时出现错误:未找到DllRegisterServer入口点的Regsvr32。

55
我使用的是64位的Windows 7系统。我正在尝试使用regsvr32注册一个.dll文件(comdlg32.dll),但是出现了一个错误,指出该dll被读取,但找不到DLLRegistryServer入口点。我已经在System32和SysWOW64下运行了命令,并且以“以管理员身份运行”的方式运行了我的命令。我的旧的MSComDlg.CommonDialog组件无法在64位系统上工作。

使用 "depends.exe" 工具验证入口点是否正确导出。 - pagra
@patriiice 我该如何使用? - disasterkid
1
只需对您的dll执行“文件/打开”操作,然后在导出列表中搜索以查找确切名称“DllRegisterServer”。如果它丢失了,那么您就必须找出原因…… - pagra
@patriiice 好的,我在右侧面板上找到了dllregisterserver。现在我该做什么? - disasterkid
8个回答

15

comdlg32.dll不是COM DLL,因此无法注册。

确认这一点的一种方法是运行以下命令:

dumpbin /exports comdlg32.dll

你会发现comdlg32.dll没有包含DllRegisterServer方法,因此RegSvr32.exe无法工作。

这就是你的答案。


ComDlg32.dll是一个系统组件。(存在于c:\windows\system32和c:\windows\syswow64中)。试图替换它或用旧版本覆盖任何注册可能会损坏Windows的其余部分。


我可以提供更多帮助,但我需要知道MSComDlg.CommonDialog是什么。它是做什么的,应该如何工作?你正在尝试注册哪个版本的ComDlg32.dll(以及你从哪里得到它)?


我正在运行一个VBScript宏,用于在QlikView软件上进行数据分析。在所有旧机器上,包括Win7 32位机器,这个MSComDlg.CommonDialog曾经用来打开一个文件对话框,但在Win7 64位机器上无法使用。我想我曾经替换过该文件,但仍未遇到任何损坏问题。我正在使用的comdlg32.dll文件版本是6.1.7601.17514。 - disasterkid
我认为Simon关于comctl32.ocx的回答是你想要的。 - selbie
我已经成功注册了ocx文件。现在我正在尝试运行这个测试:SET objComDlg32 = CreateObject("MSComDlg.CommonDialog"),但是出现了一个错误,提示无法创建此ActiveX组件。有什么想法吗? - disasterkid
30
dumpbin 不被识别为内部或外部命令。 :( - dialex
3
@DiAlex - 这是随 Visual Studio 和 Visual C++ 一起提供的。请在你的VC\bin目录下查找。 - selbie
2
@dialex 你也可以使用来自Visual Studio开发人员命令提示符dumpbin - ZX9

12

comdlg32.dll并不是真正的COM dll(无法注册)。

您需要的是包含MSComDlg.CommonDialog COM类的comdlg32.ocx(确实依赖于comdlg32.dll才能工作)。一旦获得comdlg32.ocx,您就可以执行regsvr32 comdlg32.ocx了。


谢谢!我会尝试使用ocx文件。抱歉,我不是很擅长这方面的东西。我只想在支持VBScript宏的软件上运行一个简单的文件对话框。它在之前的所有Windows版本上都可以工作,但在Win7 64位上无法工作。 - disasterkid
好的@Simon Mourier,我已经成功注册了ocx文件。现在我正在尝试运行这个测试: SET objComDlg32 = CreateObject("MSComDlg.CommonDialog"), 但是我遇到了一个错误,提示无法创建此ActiveX组件。 - disasterkid
现在,这可能是一个64/32位的问题。你不能在64位程序中使用Common Control OCX。还要确保comdlg32.dll存在于Windows\system32目录或OCX旁边。 - Simon Mourier
是的,我已经检查过了。comdlg32.dll存在于文件夹中,还有ocx文件。是否有一个可以完成相同功能的替代品? - disasterkid
当您已经注册了一个.ocx文件并且在项目设置为x86 CPU时正常工作,但是在设置为x64 CPU时告诉您该类未注册时会发生什么?您是否知道如何解决这个问题? - ThunderGr

5

为Fundsite注册DLL

过时或丢失的comdlg32.ocx运行库可能是导致此错误的问题。确保comdlg32.ocx文件未损坏,否则下载comdlg32.ocx文件(~60 Kb Zip)。

下载文件并将comdlg32.ocx提取到Windows\System32文件夹或Windows\SysWOW64。在我的情况下,我从Windows\System32开始,但在我的末端它没有起作用,所以我再次保存在Windows\SysWOW64中。

从“开始”、“运行”对话框中键入以下命令:“c:\windows>System32\regsvr32 Comdlg32.ocx ”或“c:\windows>SysWOW64\regsvr32 Comdlg32.ocx ”

现在Comdlg.ocx文件已经注册,下一步是注册DLL

  1. 将Fundsite.Text.Encoding.dll复制到以下路径下的.Net Framework 64位文件夹中 C:\Windows\Microsoft.NET\Framework64\v2.0.50727

  2. 然后在命令提示符上进入目录C:\Windows\Microsoft.NET\Framework64\v2.0.50727,然后按照下面所示运行以下命令。

这将成功注册dll。

C:\Windows\Microsoft.net\framework64\v2.0.50727>regasm "Dll Name".dll


REGASM引用是解决通用“找不到DLLRegistryServer入口点”错误消息问题的解决方案。 - Julio Nobre
从哪里下载文件? - hippietrail

1

你卸载了Internet Explorer吗?我是这样做的,但是仍然有同样的问题,如果是这样,你需要:

  1. 重新启用IE(控制面板 - 程序和功能 - 打开或关闭Windows功能)。
  2. 重新启动电脑
  3. (重要!)运行Windows更新以获取Microsoft Explorer的所有可用更新
  4. 再次重新启动电脑

最终它可以工作!


0

我在Windows 10和Visual Studio 2010中使用MFC应用程序时,遇到了与COMDLG32.OCX和MSFLXGRD.OCX相同的问题。

然后我从谷歌下载了它的压缩文件,在提取后将它们复制到以下路径:

C:\Windows\System32 (*For 32-bit machine*)
C:\Windows\SysWOW64 (*For 64-bit machine*)

然后以管理员身份运行命令提示符,然后运行以下命令:

For Windows 64-bit systems c:\windows\SysWOW64\ regsvr32 comdlg32.ocx
c:\windows\SysWOW64\regsvr32 msflxgrd.ocx (My machine is 64-bit configuration)

对于 Windows 32 位系统 c:\windows\System32\ regsvr32 comdlg32.ocx

c:\windows\System32\regsvr32 msflxgrd.ocx

成功更新上述命令后,将显示成功消息。


0
关于在Windows 10上安装旧版VB6编译应用程序时出现缺少入口点错误的信息,希望能对某人有所帮助。
缺少的OCX文件可以在Visual Basic 6.0安装程序包的“OS\System文件夹”中找到。 今天我将相关的OCX文件(从我们的网络)复制到本地计算机上。
然后,我以管理员身份键入下面的命令,通常可以成功注册它。
cd \windows\syswow64
regsvr32.exe /u mscomctl.ocx
regsvr32.exe /i mscomctl.ocx

(为/i命令添加本地复制文件的路径)

但是今天我从这两个regsvr32.exe命令中都收到了错误信息。

第二个错误是给出了DllImport缺少入口点错误,这与原帖提到的错误类似。

为了解决问题,我尝试的其中一件事情是省略开关 -。

regsvr32.exe mscomctl.ocx

令我惊讶的是,它随后显示操作成功。为了确认,应用程序之后成功启动。

-4

Regsvr32的解决方案:找不到DllRegisterServer入口点

  1. 进入系统驱动器(通常是C:)\system32并搜索文件“Regsvr32.exe”
  2. 右键单击,选择属性,进入安全选项卡,然后单击高级按钮。
  3. 点击所有者选项卡,单击编辑,选择管理员,然后单击确定。
  4. 点击权限
  5. 点击更改权限。
  6. 选择管理员,单击编辑,勾选完全控制,然后单击确定。
  7. 同样地,选择SYSTEM并编辑,勾选完全控制,然后单击确定,并单击打开的其他对话框。
  8. 现在.dll文件可以被注册,错误不会再出现,您应该重新安装任何未在安装过程中注册其dll文件的软件。

-4
我在Windows 7中注册myinfo.dll文件时也遇到了类似的问题。以下方法适用于我: 在桌面上创建一个快捷方式 C:\Windows\System32\regsvr32.exe c:\windows\system32\myinfo.dll 右键单击刚创建的快捷方式,选择以管理员身份运行。

4
这不就跟以管理员身份运行cmd一样吗? - Alec.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接