如何在Windows 7 64位上注册DLL文件?

时间:2011-02-04 11:55:31

标签: dll windows-7 64-bit regsvr32 dllregistration

我尝试使用以下代码:

cd c:\windows\system32
regsvr32.exe dllname.ax

但这不适合我。如何在Windows 7上使用64位处理器注册DLL文件?

15 个答案:

答案 0 :(得分:193)

好吧,你没有指定它是32位还是64位dll并且你没有包含错误消息,但我猜它与这篇知识库文章中描述的问题相同:Error Message When You Run Regsvr32.exe on 64-Bit Windows

引用那篇文章:

  

出现此问题的原因是System32中的Regsvr32.exe文件   文件夹是64位版本。当您运行Regsvr32以注册DLL时,   您默认使用的是64位版本。

该文章的解决方案:

  

要解决此问题,请从%SystemRoot%\ Syswow64运行Regsvr32.exe   夹。例如,键入以下命令以注册DLL:   cd \windows\syswow64 regsvr32 c:\filename.dll

答案 1 :(得分:101)

如果DLL是 32 位:

将DLL复制到C:\ Windows \ SysWoW64 \
提升命令提示符中:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

如果DLL是 64 位:

将DLL复制到C:\ Windows \ System32 \
提升命令提示符中:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

我知道这似乎是错误的方式,但这就是它的工作方式。参见:

http://support.microsoft.com/kb/249873
引用:“注意在64位版本的Windows操作系统上,有两个版本的Regsv32.exe文件:
64位版本是%systemroot%\ System32 \ regsvr32.exe 32位版本是%systemroot%\ SysWoW64 \ regsvr32.exe “  

答案 2 :(得分:67)

在命令提示符下键入regsvr32 name.dll(在提升模式下执行!)并按“Enter”。请注意,name.dll应替换为您要注册的DLL的名称。例如,如果要注册iexplore.dll,请键入regsvr32 iexplore.dll

答案 3 :(得分:29)

在x64系统上,system32用于64位,syswow64用于32位(不是另一种方式中所述的另一种方式)。 WOW(Windows上的Windows)是在64位子系统下运行的32位子系统。)

命名条款一团糟,只会让人感到困惑,但就是这样。

再次......

syswow64是32位,而不是64位。

system32是64位,而不是32位。

每个目录中都有一个regsrv32。一个是64位,另一个是32位。 与odbcad32等人的处理方式相同。 (如果你想看到32位ODBC驱动程序,它们不会出现在64位system32中的默认odbcad32。)

答案 4 :(得分:8)

打开开始菜单,在搜索框中输入cmd按住Ctrl + Shift并按Enter键

这将以管理员模式运行命令提示符。

现在输入:regsvr32 MyComobject.dll

答案 5 :(得分:6)

如果DLL是32位:

  1. 将DLL复制到C:\ Windows \ SysWoW64 \
  2. 在提升的cmd中:%windir%\ SysWoW64 \ regsvr32.exe%windir%\ SysWoW64 \ namedll.dll
  3. 如果DLL是64位:

    1. 将DLL复制到C:\ Windows \ System32 \
    2. 在提升的cmd中:%windir%\ System32 \ regsvr32.exe%windir%\ System32 \ namedll.dll

答案 6 :(得分:6)

最后我发现解决方案只是以管理员身份运行CMD然后编写

cd \windows\syswow64

然后写这个

regsvr32 c:\filename.dll

我希望答案能帮到你

答案 7 :(得分:5)

这里的一切都是错误的道路。然后我想起了旧的Win95时代的一招。打开.dll所在的程序文件夹,打开C:/ Windows / System32向下滚动到regsvr32,然后将dll从程序文件夹拖放到rgsrver32上。吊杆,完成。

答案 8 :(得分:3)

知道错误消息会很有价值。它旨在提供信息,即使它对我们没有任何意义。被迫猜测,我会说DLL是一个32位的DirectX过滤器。在这种情况下,这应该是正确的行动方案:

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax

必须在提升的命令提示符下运行,以便UAC无法停止所需的注册表访问。在superuser.com上提出更多相关问题

答案 9 :(得分:3)

我刚刚测试了这个非常简单的方法并且它运行良好 - 但是我使用了内置的管理员帐户,所以我不必为了提升权限而跳过箍。

以下批处理文件使用户无需将文件移入/移出系统文件夹。它还使Windows能够应用Regsvr32的正确版本。

<强>说明

  • 在包含您要注册的库(-.dll-.ax)文件的文件夹中,打开一个新文本文件并粘贴到以下某个例程中:

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
    copy %1 C:\Windows\System32
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
    copy %1 C:\Windows\SysWOW64
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    
  • 将新文本文件另存为批处理(-.bat)文件;然后只需将您的-.dll-.ax文件拖放到批处理文件之上。

  • 如果UAC没有为您提供以管理员身份运行批处理文件的机会,则可能需要手动提升权限(说明适用于Windows 7):

    1. 右键单击批处理文件;
    2. 选择Create shortcut;
    3. 右键单击快捷方式;
    4. 选择Properties;
    5. 点击Compatibility标签;
    6. 选中标有Run this program as administrator;
    7. 的复选框
    8. -.dll-.ax文件拖放到新快捷方式而不是批处理文件之上。

就是这样。我选择了 COPY 而不是 MOVE ,以防止任何与UAC相关的后续尝试失败。成功注册后,应删除原始库( -.dll -.ax )文件。

不要担心关于对系统文件夹( C:\Windows\System32 C:\Windows\SysWOW64 的副本)以前的通行证 - 每次运行批处理文件时都会被覆盖。

除非您运行了错误的批处理文件,在这种情况下,您可能希望删除对错误的系统文件夹进行的复制( C:\Windows\System32 C:\Windows\SysWOW64在运行正确的批处理文件之前,......或......

  • 帮助Windows通过完全限定其目录位置来选择要注册的正确库文件。

    1. 从右侧批处理文件中复制系统文件夹路径
      • 如果是64位:C:\Windows\System32
      • 如果是32位:C:\Windows\SysWOW64
    2. 将其粘贴到下一行,使其位于%nx1之前
      • 如果是64位:regsvr32 "C:\Windows\System32\%nx1"
      • 如果是32位:regsvr32 "C:\Windows\SysWOW64\%nx1"
        • 将路径粘贴到引号内
        • 插入反斜杠以将%nx1与系统文件夹路径分开
      • ...

  • 运行此霰弹枪批处理文件,该文件将(按顺序):

    1. 执行中止注册过程的清理
      • 撤消库文件完成的所有注册过程;
      • 删除已保存到系统文件夹的库文件的所有副本;
      • 暂停以允许您在此时终止批处理文件(如果您愿意,可以运行另一个)。
    2. 在库文件上尝试64位安装
      • 将您的库文件复制到C:\Windows\System32;
      • 将您的库文件注册为64位进程;
      • 暂停以允许您此时终止批处理文件。
    3. 撤消64位安装
      • 将库文件的任何注册转换为64位进程;
      • C:\Windows\System32;
      • 删除您的图书馆文件
      • 暂停以允许您在此时终止批处理文件(如果您愿意,可以运行另一个)。
    4. 尝试库文件上的32位安装
      • 将您的库文件复制到C:\Windows\SystemWOW64
      • 将您的库文件注册为32位进程;
      • 暂停以允许您此时终止批处理文件。
    5. 删除库文件的原始未注册副本

答案 10 :(得分:3)

Windows 7存在差异。以管理员身份登录提供与以管理员身份运行程序时相同的权限。

转到“开始” - “所有程序” - “附件”。 右键单击“命令”窗口,然后选择“以管理员身份运行” 现在通过以下方式注册dll:regsrvr32 xxx.dll

答案 11 :(得分:3)

在执行此操作时,如果您收到错误代码0x80040201,请尝试 DllRegisterServer failed with the error code 0x80040201 中的解决方案,但请确保打开命令提示符以管理员身份运行

答案 12 :(得分:3)

您需要在cmd.exe

中运行c:\windows\system32\ by administrator

命令: 取消注册 * .dll文件

regsvr32.exe /u C:\folder\folder\name.dll

注册 * .dll文件

regsvr32.exe C:\folder\folder\name.dll

答案 13 :(得分:2)

关于regsvr32的一些混淆是,在64位窗口上,名称和路径没有改变,但现在它注册了64位DLL。 32位regsvr32存在于SysWOW64中,该名称似乎代表64位应用程序。但是,名称中的WOW64指的是Windows 64上的Windows,或Windows 64位上更明确的Windows 32位。当你以这种方式想到它时,即使在这种情况下令人困惑,这个名字仍然有意义。

我在MSDN博客上找不到我的原始资料,但在维基百科的这篇文章http://en.wikipedia.org/wiki/WoW64中引用了

答案 14 :(得分:1)

以下是我在Win7 x64计算机上解决此问题的方法:

1 - 错误消息:

“CoCreateInstance()失败 Plkease检查您的注册表项 CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3}并确保以管理员身份登录“

2 - 修复程序:

  • 在cmd.exe上启动/输入cmd / RightMouseClick,然后选择“以管理员身份运行”
  • 类型的: regsvr32 / s C:\ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C:\ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • 重启Win 7并重新开始营业!

希望这有帮助!