web-dev-qa-db-ja.com

32ビットと64ビットをカバーするようにRegAsmを実行するにはどうすればよいですか?

DLLファイルはC#で準備されており、システムはWindows 7 64ビットです。RegAsmを適用すると、64ビットパスにレジストリが追加されず、32ビットに追加されるだけです。道。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /register /codebase "C:\o.dll"

次に、regedit.exeでGUID=を確認すると、32ビットのレジストリパスにのみあることがわかります:HKEY_CLASSES_ROOT\CLSID\{... my guid is found here ....}

HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{... not found my guid ...}の代わりに

結果として、これに関して他の問題があります。誰もが何が起こっているのか、なぜそれが32ビットおよび64ビットのレジストリエントリを作成しないのかを提案できますか?」

19
user285594

あなたはそれを逆に持っています。 Wow6432Nodeは、32ビット固有のデータが送られる場所です。 32ビットregasm(Framework64ディレクトリではなくFrameworkディレクトリから)を使用して、コンポーネントをWow6432Nodeに登録します。

24
cynic

また、あなたはおそらくAllCPUオプションであなたのdllをコンパイルしました、あなたがそうするようにx64および/またはx86オプションでコンパイルして登録してみてください

  • x64の場合-"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /register /codebase "C:\x64\o.dll"
  • x86の場合-"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /register /codebase "C:\x86\o.dll"

追伸5年間の質問ですが、他の人々の助けになるかもしれません

0
Fyodor

私の2016 Windowsサーバーではそれは反対でした、それは「Framework64」フォルダーではなく「Framework」フォルダーを使用して登録する必要があった古いdllでした:「C:\ windows\Microsoft.net\Framework\v4.0.30319\regasm "/ register/codebase"ここにdllへのフルパス "

0
TamerDev