マーク・シーマンの回答に追加:
MMCレジストリエントリを直接チェックして、スナップインが64ビットレジストリエントリに登録されているか、32ビットリダイレクトレジストリ(Wow6432Nodeの下に表示されるレジストリ)に登録されているかを確認することもできます。
- 64ビットスナップイン:HKLM \ Software \ Microsoft \ MMC \ SnapIns \ FX:{SNAP-IN-GUID} .. ..
- 32ビットスナップイン:HKLM \ Software \ Wow6432Node \ Microsoft \ MMC \ SnapIns \ FX:{SNAP-IN-GUID} .. ..
エントリがHKLM\Software \ Wow6432Nodeの下にのみある場合は、32ビットスナップインを登録しています。「MMC / 32」の実行に関するMarkのアドバイスにより、エントリが表示されるはずです。それは世界の終わりではありません。MMCセッションをスナップインショートカットとして保存すると、実行時に32ビットバージョンのMMCが開くと思います。
64ビットのスナップイン登録が本当に必要な場合(そしてなぜそうではないのですか?)、MSDNには、 64ビットと32ビットを取得するために呼び出すInstallUtilパスなど、いくつかの詳細が記載されたMMC64ビットと32ビットの考慮事項に関するページがあります。レジストリエントリ。
ただし、一部のMSIパッケージアプリケーションでは、ターゲットマシンでInstallUtil.exeを呼び出すのではなく、実際にはMSI自体にInstallUtil.exeのコピーがバイナリとして含まれていることに注意してください。(これが発生しているかどうかは、Orcaを使用してMSIバイナリテーブルとカスタムアクションを確認することで確認できます。)32ビットのInstallUtilのみが含まれていると、登録が間違った場所(Wow6432Node)に配置されます。
私が理解しているように、Windowsインストーラーの「正しい方法」(TM)は、InstallUtilをまったく使用しないことです(主に、マネージドMSIカスタムアクションの実行に関連する問題が原因だと思いますか?)。いずれにせよ、InstallUtilの使用を避けた場合は、MSIでレジストリエントリを明示的に作成し、Windowsインストーラーがそれらの作成と削除を制御できるようにすることで、スナップインを完全に登録します。
または、カスタムアクションを実行して、ターゲットマシンのFramework64フォルダーの下にあるInstallUtil.exeを呼び出すこともできます。これで正しいスナップイン登録場所が得られますが、それが気になる場合は、カスタムアクションが実行中にCMDシェルウィンドウをポップアップするという事実に対処する必要があります。MSIオーサリングツールに同等のものがあるかどうかはわかりませんが、WiXにはQuiet ExecutionCustomActionがあります。(WiXを使用していない場合でも、WixUtilExtension.dllをインクルードし、QtExec64CmdLineプロパティを適切に設定した後に「CAQuietExec64」を呼び出すことができると思います...しかし、そのレベルのMSIオーサリングで作業している場合はおそらくより良いでしょうWiXを切り替えて使用するだけです:)