64bit環境で右クリック時のコンテキストメニューが表示されない。

[戻る]
ヤマダ 2011/04/11(月) 14:12:51
ファイルを右クリック時のコンテキストメニューに登録、別アプリを起動させるdllのコン
ポーネントを作成しています。32bit OSでは正常に動いているのですが、64bitOSでは動作
しません。

dll、アプリはすべて32bitビルドでWow64環境で動かすことを前提としています。
一応64bit環境でregsvr32 で登録は成功し、レジストリに書き込みされているまで確認しま
した。

何か64bit OSで考慮しなくてはいけない点はあるのでしょうか?

gak 2011/04/11(月) 18:13:16
> 何か64bit OSで考慮しなくてはいけない点はあるのでしょうか?
・64bit版のdllも用意する必要が在る。
・レジストリの InprocServer32 への書き込みはリダイレクトされないらしい
(http://msdn.microsoft.com/ja-jp/library/aa384253.aspx)ので、32Bit(\SOFTWARE
\Wow6432Node\CLSID\...\InprocServer32)と64Bit(\SOFTWARE\CLSID\...
\InprocServer32)とで処理分けする必要が在る。かも

# 俺も実際に64Bit環境でコンテキストメニュー追加なんてした事無いので↑が解答となる
# かどうかは判りません。

> dll、アプリはすべて32bitビルドでWow64環境で動かすことを前提としています。
これを前提としたいならエクスプローラも「%windir%\syswow64\explorer.exe
/separate」とかして32Bit版を指名してやらなきゃダメだと思うんだけど。64Bitアプリ
から32bitDLL呼べないし。

ヤマダ 2011/04/12(火) 15:01:03
[[解決]]
返信ありがとうございます。

結果的にコンテキストメニュー用のdllのみ64bitのネイティブコンパイルすることにしまし
た。
対象のアプリを呼んでいるだけなので、ソースの修正も必要ないですし。

gak 2011/04/12(火) 18:25:16
蛇足な気もするんだけど一つ。

explorer(64Bit版)等の64BitアプリとWow64上で動く32Bitアプリ(32Bit版explorer、
X-Finder等)両方のコンテキストメニューに項目を追加したい場合は、32Bit、64Bit両方
のDLLを用意して登録してやる必要があるよ。
64Bitアプリのみが対象でWow64上で動くアプリは相手にしないとかなら、64bit版のみ用
意するという形で問題無いけど。

古いスレッドには追加発言できません。