2011-02-04 177 views
85

我曾尝试使用下面的代码:如何在Windows 7 64位上注册DLL文件?

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

但是这不是为我工作。如何在Windows上使用64位处理器注册DLL文件?

+0

看到这个问题被标记为“vb.net”,我不得不想知道为什么你要注册一个你在VB.NET中创建的DLL。要与`regsvr32`一起使用,DLL必须导出函数`DllRegisterServer`和`DllUnregisterServer`。根本没有注册绝大多数您创建的DLL。 – 2011-02-03 11:41:19

+12

你的意思是什么不起作用或没有用?你有错误信息吗?它说什么? – 2011-02-04 12:08:52

回答

59

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

+1

我用同样的东西,然后它也给出错误信息 – 2011-02-04 12:07:32

+12

请记住在提升模式下运行命令提示符。 – Puneet 2014-11-05 05:14:43

+5

`regsvr32` **带有文件名和扩展名的.dll文件的路径**,然后按ENTER键 – 2015-02-10 10:34:45

165

嘛,你不指定,如果它是一个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\syswow64regsvr32 c:\filename.dll

+12

为什么这不是所选的答案? – 2014-04-10 19:40:43

+5

这确实应该是正确的答案。我可以理解,在他原来的文章中,语法是不正确的,但是Rajkumar评论说他即使在使用正确的语法时也收到错误消息。 这需要两个步骤才能找到正确的答案,而不是一个人搜索。首先选择正确的答案,然后按照评论链,结束这篇文章。 – Rob 2014-08-21 15:28:17

+1

运行字符串中的小问题。如果你想从运行窗口运行,应该是“c:\ windows \ syswow64 regsvr32 c:\ filename.dll”。 – Hightower 2014-10-31 10:38:24

2

知道错误信息将是相当宝贵的。它是为了提供信息,尽管它对我们没有任何意义。被迫猜测,我会说这个DLL是一个32位的DirectX过滤器。在这种情况下,这应该是行动的正确的做法:

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

这必须在提升的命令提示符下运行,使UAC不能停止的需要的注册表访问。问这个问题了,在superuser.com

5

如果DLL是32位:

  1. 复制DLL到C:\ WINDOWS \ SYSWOW64 \
  2. 在提升的cmd中:%windir%\ Syswow64资料\ regsvr32.exe的%WINDIR%\ SYSWOW64 \ namedll.dll

如果DLL是64位:

  1. 复制DLL到C:\ WINDOWS \ SYSTEM32 \
  2. 在提升的cmd中:%windir%\ System32 \ regsvr32.exe%windir%\ System32 \ namedll。dll的
4

最后我找到了解决办法只是运行CMD以管理员身份,然后写

cd \windows\syswow64 

然后写这

regsvr32 c:\filename.dll 

我希望这个问题的答案将帮助您

28

在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)。

7

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

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

现在键入:regsvr32 MyComobject.dll

95

如果DLL是位:

复制DLL到C:\的Windows \ SYSWOW64 \
升高命令提示:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

如果该DLL是位:

复制DLL到C:\ WINDOWS \ SYSTEM32 \
升高命令提示符:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

我知道这似乎南辕北辙,但这是它的工作方式。请参阅:

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

2

我刚刚测试了这个非常简单的方法和它完美的作品 - 但我用内置的Administrator帐户,所以我不必赴汤蹈火为提升权限

以下批处理文件减轻了需要输入/输出系统文件夹中的文件移动用户也离开它到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. 将您的-.dll-.ax文件拖放到新快捷方式而不是批处理文件的顶部。

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

不要担心到系统文件夹(C:\Windows\System32C:\Windows\SysWOW64)由以前的传球制造有关副本 - 他们将在每次运行批处理文件时被覆盖。

除非你跑错了批处理文件,在这种情况下,你可能会想运行适当的批处理文件之前删除了错误的系统文件夹(C:\Windows\System32C:\Windows\SysWOW64复印一份。 ..或...

  • 帮助窗口要选择合适的库文件被完全合格的目录位置进行注册。

    1. 从右侧批处理文件复制系统文件夹路径
      • 如果64位:C:\Windows\System32
      • 如果32位:C:\Windows\SysWOW64
    2. 粘贴它的下一行,使得其优先于%nx1
      • 如果是64位:regsvr32 "C:\Windows\System32\%nx1"
      • 如果32位:引号内regsvr32 "C:\Windows\SysWOW64\%nx1"
        • 粘贴路径
        • 插入反斜杠从系统文件夹路径分离%nx1
      • ...

  • 运行这个霰弹枪批处理文件,whi将CH(按顺序):

    1. 执行中止登记处理清理
      • 逆向任何注册过程中你的库文件完成;
      • 删除已保存到系统文件夹的任何库文件副本;
      • 暂停以允许您在此时终止批处理文件(如果需要,可以运行另一个文件)。在你的库文件
    2. 尝试64位安装
      • 你的库文件复制到C:\Windows\System32;
      • 将您的库文件注册为64位进程;
      • 暂停以允许您在此时终止批处理文件。
    3. 撤消64位安装
      • 逆向媒体库文件作为一个64位的过程中的任何注册;
      • C:\Windows\System32中删除您的库文件;
      • 暂停以允许您在此时终止批处理文件(如果需要,可以运行另一个文件)。在你的库文件
    4. 尝试32位安装
      • 你的库文件复制到C:\Windows\SystemWOW64
      • 注册您的库文件作为32位进程;
      • 暂停以允许您在此时终止批处理文件。
    5. 删除库文件
2

的原创,未经注册的副本有一个在Windows 7中的不同登录为管理员并没有相同的权限运行一个程序作为管理员的时候。

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

4

这里的一切都是错误的路径失败。然后我想起了Win95的旧日子里的一招。打开.dll所在的程序文件夹,打开C:/ Windows/System32,向下滚动到regsvr32,并将程序文件夹中的dll拖放到rgsrver32上。热潮,完成。

1

有关regsvr32的混淆部分是在64位窗口上名称和路径没有改变,但它现在注册了64位DLL。 SysWOW64中存在32位regsvr32,这个名称似乎代表64位应用程序。但名称中的WOW64指的是Windows 64上的Windows,或者更多的Windows 64位上的Windows 32位。当你这样想起这个名字时,即使它在这种情况下令人困惑,这个名字也是有道理的。

我找不到我原来的源上的MSDN博客但这个维基百科文章http://en.wikipedia.org/wiki/WoW64

2

你需要运行cmd.exec:\windows\system32\ by administrator

命令中引用: 对于注销 * .dll文件

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

注册 *。dll文件

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

这里是我固定一个Win7的X64机器上这个问题:

1 - 错误信息:

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

2 - 修复程序:

  • 开始/键入cmd/RightMouseClick上的cmd.exe并选择 “以管理员身份运行”
  • 输入:REGSVR32 /s的C:\ Program Files文件\欧特克\ 3ds Max的设计2015年\ ATL.DLL REGSVR32/S C:\ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • 重新启动Win 7并重新开始业务!

希望这有助于!

相关问题