Расширение оболочки контекстного меню не работает в 64-разрядной версии Windows 7 - PullRequest
2 голосов
/ 13 апреля 2010

Я создал очень простое контекстное меню, используя расширение оболочки в C #. Он отлично работает в 32-битной Windows XP, но в 64-битных пунктах Windows 7 не появляется.

Я попытался построить вывод программы установки для x64, но безрезультатно.

Простой источник содержит ContextMenu и проект установки здесь .

Похоже, Wow6432 должен обрабатываться проектом установки, то же самое для регистрации и добавления в глобальный кэш сборок

Буду признателен за помощь / предложения по этому вопросу.

Ответы [ 3 ]

3 голосов
/ 13 апреля 2010

Я настоятельно рекомендую вам держаться подальше от любого кода, написанного Esposito. Как обычно, его объявления P / Invoke в папке ShellExt полностью неверны, они не могут работать в 64-битном коде. Во-первых, публикация этого кода была очень безответственной, расширения оболочки никогда не должны использовать версию .NET CLR до 4.0. Посетите pinvoke.net, если хотите спасти его.

1 голос
/ 13 апреля 2010

Проверьте платформу DLL в Visual Studio и убедитесь, что она 64-битная. 64-разрядные процессы не могут загружать 32-разрядные библиотеки DLL в свое пространство процессов (и наоборот, естественно).

Чтобы создать 64-разрядную версию библиотеки DLL, используйте диспетчер конфигурации Visual Studio для создания новой платформы решения. Выберите X64 (вместо X86 или любой другой платформы) и пересоберите проект. Есть также ключи командной строки для компилятора C #, если вы используете сборку по сценарию.

0 голосов
/ 13 октября 2010

У меня такая же проблема. Вам нужно изменить InstallUtil.dll в вашем установочном файле. Я написал статью в своем блоге об этом. http://artyomgrigor.wordpress.com/2010/10/06/register-shell-extension-context-menu-also-on-windows-x64-part-2/

...