我尝试使用以下代码:
cd c:\windows\system32
regsvr32.exe dllname.ax
但这对我不起作用。如何在Windows 7上使用64位处理器注册DLL文件?
我尝试使用以下代码:
cd c:\windows\system32
regsvr32.exe dllname.ax
但这对我不起作用。如何在Windows 7上使用64位处理器注册DLL文件?
Answers:
好吧,您没有指定它是32位还是64位dll,并且没有包含错误消息,但是我想这与此知识库文章中描述的问题相同:运行Regsvr32.exe时出现错误消息在64位Windows上
引用那篇文章:
出现此现象的原因是System32文件夹中的Regsvr32.exe文件是64位版本。当您运行Regsvr32来注册DLL时,默认情况下使用的是64位版本。
该文章的解决方案:
若要解决此问题,请从%SystemRoot%\ Syswow64文件夹运行Regsvr32.exe。例如,键入以下命令来注册DLL:
cd \windows\syswow64
regsvr32 c:\filename.dll
如果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
Quote:“注意在Windows操作系统的64位版本上,有两个版本的Regsv32.exe文件:
64位版本为%systemroot%\ SYSTEM32 \ REGSVR32.EXE。
的32位版本是%SYSTEMROOT%\ SYSWOW64 \ REGSVR32.EXE。
“
在x64系统上,system32用于64位,而syswow64用于32位(这与另一个答案中所述的相反)。WOW(Windows上的Windows)是在64位子系统下运行的32位子系统。
从名称上来讲,这是一团糟,并且只能使人迷惑,但这就是事实。
再次...
syswow64是32位,而不是64位。
system32是64位,而不是32位。
每个目录中都有一个regsrv32。一个是64位,另一个是32位。与odbcad32等人的处理相同。(如果要查看32位ODBC驱动程序,该驱动程序不会在system32的默认odbcad32(64位)中显示。)
regsvr32
将注意细节,从理论上讲,它将检测您是注册32位还是64位DLL:stackoverflow.com/questions/18935163/…–
打开开始菜单,然后在搜索框中输入cmd按住Ctrl + Shift并按Enter
这将在管理员模式下运行命令提示符。
现在输入: regsvr32 MyComobject.dll
最后我发现解决方案只是以管理员身份运行CMD然后编写
cd \windows\syswow64
然后写这个
regsvr32 c:\filename.dll
希望这个答案对您有帮助
这里的一切都失败了,是错误的道路。然后我想起了旧Win95时代的一个技巧。打开.dll所在的程序文件夹,打开C:/ Windows / System32向下滚动到regsvr32并将dll从程序文件夹拖放到rgsrver32上。繁荣,完成。
我刚刚测试了这个非常简单的方法,并且效果很好—但是我使用了内置的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):
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
系统文件夹路径分开运行此shot弹枪批处理文件,它将(按顺序):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
当我为bat文件创建快捷方式时,该按钮显示为灰色。我以管理员身份登录。另外,%nx1
还是%n1
?
Windows 7中存在差异。以管理员身份登录不会给予同等的权利运行的程序作为管理员时。
转到开始-所有程序-附件。右键单击“命令”窗口,然后选择“以管理员身份运行”,现在通常通过以下方式注册dll:regsrvr32 xxx.dll
并且在执行此操作时,如果收到错误代码0x80040201,请尝试以下方法 DllRegisterServer中失败,并显示错误代码0x80040201,但请确保以管理员身份运行以打开命令提示符。
关于regsvr32的部分困惑在于,在64位Windows上,名称和路径没有更改,但是现在它注册了64位DLL。SysWOW64中存在32位regsvr32,该名称似乎代表64位应用程序。但是,名称中的WOW64指的是Windows 64上的Windows,或更确切地说是Windows 64位上的Windows 32位。当您以这种方式考虑时,即使在这种情况下它令人困惑,该名称还是有意义的。
我无法在MSDN博客上找到原始资源,但此Wikipedia文章http://en.wikipedia.org/wiki/WoW64引用了该原始资源。
这是我在Win7 x64计算机上解决此问题的方法:
“ CoCreateInstance()失败,请检查您的注册表项CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3},并确保您以管理员身份登录”
希望这可以帮助 !
regsvr32
,DLL必须导出函数DllRegisterServer
和DllUnregisterServer
。根本没有注册您创建的绝大多数DLL。