32-битная DLL не работает в 64-битной ОС - PullRequest
0 голосов
/ 27 сентября 2011

Я создал файл dll (Project: приложение win32, ATL и COM-объект с использованием Visual Studio 2008) в 32-разрядной версии.В win 7 32-битной ОС, после регистрации моей dll я получаю опцию «ABC» в контекстном меню (при нажатии правой кнопки мыши).Теперь я перехожу, чтобы выиграть 7 64-битных ОС.Dll успешно загружен, но я не получаю опцию «ABC» при щелчке правой кнопкой мыши (в контекстном меню).Может ли кто-нибудь указать мне, где я ошибся или какие-либо предложения?

Примечание: Правый щелчок по папке дает вариант "ABC".

1 Ответ

3 голосов
/ 27 сентября 2011

Расширение оболочки, скомпилированное для 32-битного, будет работать только в 32-битном процессе. Windows Explorer 64-битной Windows - это 64-битный процесс, поэтому для него требуется расширение 64-битной оболочки.

Если 32-битное приложение будет использовать диалоговое окно открытия файла (в 64-битной Windows), для этого диалога потребуется расширение 32-битной оболочки. Поэтому рекомендуется установить ваше расширение так:

  • Win32: 32-битное расширение оболочки
  • Win64: 64-битное и 32-битное расширение оболочки

Чтобы сделать это, вы должны задать разные GUIDS для расширения оболочки 32-бит / 64-бит. Надеюсь, это сделает это немного яснее.

Редактировать: Как предположил Рэймонд, кажется, что вы можете использовать один и тот же GUID для обоих расширений.

...