Regsvr32.exe的版本必须与您要注册的dll的32位/ 64位相匹配。 64位regsvr32无法加载32位dll,反之亦然。
您可能需要显式调用位于%systemroot%\ SysWoW64 \ regsvr32.exe中的regsrv32的32位版本。
从http://support.microsoft.com/kb/249873
Regsvr32.exe会包含在Microsoft Internet Explorer 3.0或更高版本,Windows 95 OEM服务版本2(OSR2)或更高版本以及Windows NT 4.0的Service Pack 5(SP5)或更高版本。 Regsvr32.exe安装在系统(Windows Me/Windows 98/Windows 95)或System32(Windows NT/Windows XP/Windows Vista/Windows 7)文件夹中。
注意在Windows操作系统的64位版本,还有Regsv32.exe文件的两个版本:
- 64位版本%SYSTEMROOT%\ SYSTEM32 \ regsvr32.exe的。
- 32位版本是%systemroot%\ SysWoW64 \ regsvr32.exe。
Regsvr32.exe的用法 REGSVR32.EXE具有以下命令行选项: Regsvr32的[/ U] [/ N] [/ I [:CMDLINE]其中dllname
/U - 取消注册服务器 /我 - 调用DllInstall传递一个可选的[cmdline];当用/ u调用dll卸载时 /n - 不要调用DllRegisterServer;此选项必须与/ i /s一起使用 - 无声;不显示消息框(在Windows XP和Windows Vista中添加) 当您使用Regsvr32.exe时,它会尝试加载组件并调用其DLLSelfRegister函数。如果此尝试成功,Regsvr32.exe将显示一个对话框,指示成功。如果尝试失败,Regsvr32.exe将返回错误消息。这可能包括一个Win32错误代码。有关更多信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章: 193625 WinInet错误代码(12001到12156)
这可能是一个愚蠢的问题,但如果你有一个32位和64位版本的程序集,那你为什么要在64位操作系统上注册32位版本? – NotMe 2013-11-20 15:39:21
这可能是一个比较愚蠢的问题,但为什么错误信息中有语法错误?这是否应该提示一些FU情况? – arsaKasra 2014-01-18 15:07:53
回答第一个愚蠢的问题:质量保证。由于64位Windows支持32位DLL,我们必须确保我们的32位DLL在这种情况下工作。 – 2014-01-22 17:49:52