在64位的系统,如由64位应用程序看到:
- System32下:包含64位的系统文件
- SYSWOW64:包含32个位系统文件
在64位系统上,如32位应用程序所示:
- System32下:典型地重新定向到SYSWOW64,所以访问32位系统文件
- SysNative:重定向到真实System32下;访问64位文件
在64位系统上,禁用文件系统重定向(见IntallScript的WOW64FSREDIRECTION
或Windows的Wow64DisableWow64FsRedirection
)如果你碰巧有到System32文件夹的路径,它将访问的64位文件。
Regasm不在此位置;相反,32位版本位于Windows\Microsoft.NET\Framework\<version>
,而64位版本位于Windows\Microsoft.NET\Framework64\<version>
。这里没有奇怪的文件夹名称,但它不是系统文件夹。
注意: 注册文件需要正确的位数和正确的应用程序。此外,如果你正在创建一个Windows安装程序包(例如一个基本的MSI项目),你不应该在安装时调用这样的工具;你应该使用像COM提取这样的构建时工具来处理本地的DLL,而使用COM Interop来处理被管程序集来将它们的自注册转化为MSI数据:正确地标记组件的64位设置,并且InstallShield应该处理其余的部分。
Syswow64 regsvr32应该可以工作。您可能必须以管理员身份运行。我通常使用VS Developer命令提示符。 [here](http://stackoverflow.com/questions/1163503/what-is-difference-bw-regasm-exe-and-regsvr32-how-to-generate-a-tlb-file-usi)是一个链接regsvr32和regasm之间的差异 – alykins 2014-10-02 20:05:44
但我在一个链接中看到Syswow64是注册32位dll的。命名约定混乱了。 – 2014-10-02 20:50:32
你试过了吗? – alykins 2014-10-03 12:25:19