我尝试使用以下代码:
cd c:\windows\system32
regsvr32.exe dllname.ax
但这不适合我。如何在Windows 7上使用64位处理器注册DLL文件?
答案 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位:
如果DLL是64位:
答案 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):
Create shortcut
; Properties
; Compatibility
标签; Run this program as administrator
; -.dll
或-.ax
文件拖放到新快捷方式而不是批处理文件之上。 就是这样。我选择了 COPY
而不是 MOVE
,以防止任何与UAC相关的后续尝试失败。成功注册后,应删除原始库( -.dll
或 -.ax
)文件。
不要担心关于对系统文件夹( C:\Windows\System32
或 C:\Windows\SysWOW64
的副本)以前的通行证 - 每次运行批处理文件时都会被覆盖。
除非您运行了错误的批处理文件,在这种情况下,您可能希望删除对错误的系统文件夹进行的复制( C:\Windows\System32
或 C:\Windows\SysWOW64
)在运行正确的批处理文件之前,......或......
帮助Windows通过完全限定其目录位置来选择要注册的正确库文件。
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
之前
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
与系统文件夹路径分开运行此霰弹枪批处理文件,该文件将(按顺序):
C:\Windows\System32
; C:\Windows\System32
; C:\Windows\SystemWOW64
答案 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计算机上解决此问题的方法:
“CoCreateInstance()失败 Plkease检查您的注册表项 CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3}并确保以管理员身份登录“
希望这有帮助!