2

C#でShell Extensionを使用して、非常に単純なコンテキストメニューを作成しました。Windows XP 32ビットでは正常に動作しますが、Windows764ビットではメニュー項目が表示されません。

セットアップ出力をx64にビルドしようとしましたが、効果がありません。

Simple SourceにはContextMenuが含まれており、セットアッププロジェクトはここにあります。

Wow6432はセットアッププロジェクトで処理する必要があるようです。登録とグローバルアセンブリキャッシュへの追加についても同じです。

この問題に関するヘルプ/提案をいただければ幸いです。

4

3 に答える 3

3

Espositoによって作成されたコードには近づかないことを強くお勧めします。いつものように、ShellExtフォルダーでの彼のP / Invoke宣言は完全に間違っており、64ビットコードでは機能しません。そもそも、このコードの公開は非常に無責任でした。シェル拡張機能は、4.0より前の.NETCLRバージョンを使用しないでください。救助したい場合は、pinvoke.netにアクセスしてください。

于 2010-04-13T18:55:12.760 に答える
1

Visual StudioでDLLのプラットフォームをチェックし、64ビットであることを確認します。64ビットプロセスは、32ビットDLLをプロセススペースにロードできません(当然、その逆も同様です)。

DLLの64ビットバージョンを構築するには、VisualStudioの構成マネージャーを使用して新しいソリューションプラットフォームを作成します。(X86または任意のプラットフォームの代わりに)X64を選択し、プロジェクトを再構築します。スクリプトビルドを使用している場合は、C#コンパイラ用のコマンドラインスイッチもあります。

于 2010-04-13T17:47:57.297 に答える
0

私も同じ問題だと思います。セットアップファイルのInstallUtil.dllを変更する必要があります。それについてブログに記事を書きました。 http://artyomgrigor.wordpress.com/2010/10/06/register-shell-extension-context-menu-also-on-windows-x64-part-2/

于 2010-10-13T14:52:30.480 に答える