7

У меня есть несколько сторонних приложений, которые добавляют свои действия в меню, которое активируется путем щелчка правой кнопкой мыши по файлам в проводнике Windows. Это такие инструменты, как TortoiseSVN.

Обычно он работает нормально, но некоторые приложения открывают окна Windows Explorer, где эти меню отсутствуют. Например, запуск окна проводника Windows из Cygwin с помощью explorer . & , или использование действия "Исследовать файлы" в Eclipse приводит к такому состоянию.

Это ошибка в Vista? Могу ли я что-нибудь сделать, чтобы Windows Explorer вел себя согласованно?

Пояснение Править:

На самом деле, после тщательного изучения, кажется, что на самом деле разные значки меню появляются в зависимости от режима вызова. Например, приложение "Unlocker" отображается только в "порожденной" версии, тогда как значки Tortoise и DiffMerge отображаются в непосредственно запущенной.

Вот как должно выглядеть "нормальное" окно Windows Explorer на моем компьютере. Это было открыто с помощью ярлыка WinKey-E или вызвано из командной оболочки DOS:

альтернативный текст

Вот как это выглядит (рассматривая тот же файл в том же каталоге) при запуске из Cygwin:

альтернативный текст

Пояснение Править 2:

Я наблюдаю следующие различия при запуске из Eclipse и Cygwin:

  • Наложения значков TortoiseSVN и TortoiseGIT не отображаются
  • Редактировать с помощью Блокнота ++ не отображается
  • Меню TortoiseSVN и TortoiseGIT не отображаются
  • Меню DiffMerge не отображаются
  • Меню ластика не отображается
  • 7Zip меню не отображаются
  • Меню Unlocker действительно показывают вверх

Насколько я помню, из этих приложений были установлены только Notepad++ и TortoiseSVN, когда я наблюдал эту проблему, а также KDiff3 (позже я удалил контекстные меню KDiff3, чтобы попытаться устранить их).

Кроме того, может быть уместно, что я на 64-битной Vista.

Обновление 3:

Благодаря предложению Греча я установил и запустил ShellExView, как 32-битную, так и 64-битную версии. Как я и догадывался, эти двое увидели разные комплекты предметов.

Вот снимки экрана для 32-разрядной оболочки ShellExView и 64-разрядной версии ShellExView. Они ограничены всеми записями сторонних разработчиков.

(Откройте изображения в новых вкладках / окнах, чтобы увидеть их в полном размере)

32-бит:

альтернативный текст

64-бит:

альтернативный текст

Итак, проблема сводится к следующему: когда Windows Explorer создается из 32-разрядного приложения, он получает другой набор меню, чем при запуске из 64-разрядного приложения. Чтобы подтвердить это, я запустил 32-разрядную командную строку, используя %windir%\SysWoW64\cmd.exe , и запустил explorer . внутри Как и ожидалось, меню 32-битных приложений были видны.

Заключение

Да, проблема в том, что я запускал 32-разрядную версию Eclipse в 64-разрядной ОС, и это приводило к появлению 32-разрядной версии Windows Explorer, в которой не было подключено мое 64-разрядное меню TortoiseSVN/TortoiseGIT. Решение состоит в том, чтобы установить 32-разрядные версии Tortoise бок о бок, как указано на странице загрузок TortoiseSVN:

Примечание для пользователей x64: вы можете установить как 32-битную, так и 64-битную версию одновременно. Это включит функции TortoiseSVN также для 32-битных приложений.

Большое спасибо Арджану за то, что он задал правильные вопросы, и Гречу за то, что он предложил ключевой инструмент для диагностики основной проблемы. Я собираюсь принять ответ Харримка, так как он на самом деле ближе всего подходит к основному ответу, и я не думаю, что есть способ поделиться щедростью, но я хочу, чтобы вы, ребята, знали, что ваша помощь была решающей.

2 ответа2

4

Аналогичная проблема была рассмотрена в следующем потоке: HgTortoise в 64-разрядной версии Vista не показывает контекстное меню.

Там, принятым ответом был способ запустить 32-битный Windows Explorer в Vista 64-битной с помощью команды:

% Systemroot%\SysWOW64\explorer.exe / Отдельный

В последнем обновлении ветки сказано:

Обновление: TortoiseHg 0.8 (выпущен 2009-07-01) теперь включает в себя как 32-, так и 64-битные расширения оболочки в установщике, а также работает с Windows 7. Обходной путь, описанный ниже, больше не нужен.

Таким образом, кажется, что ваша проблема в том, что некоторые продукты просто устанавливают только одну версию расширения, 32 или 64 бита. Это нормально, поскольку 32-разрядные расширения оболочки нельзя загружать в 64-разрядный Windows Explorer, и наоборот.

Тогда для каждого такого продукта можно было бы найти отсутствующую 32/64-битную версию расширения оболочки и установить ее в соответствующей среде.

3

Мои извинения, если я просто показываю свое невежество с этим предложением, но оно подразумевается хорошо.

Если вы зайдете в NirSoft и посмотрите на бесплатное программное обеспечение под названием ShellEx View в его бесплатных Системных инструментах, это может помочь:

Расширения оболочки - это внутрипроцессные COM-объекты, которые расширяют возможности операционной системы Windows. Большинство расширений оболочки автоматически устанавливаются операционной системой, но есть также много других приложений, которые устанавливают дополнительные компоненты расширения оболочки. Например: если вы установите WinZip на свой компьютер, вы увидите специальное меню WinZip, если щелкнуть правой кнопкой мыши файл Zip. Это меню создается путем добавления расширения оболочки к системе.

Утилита ShellExView отображает подробную информацию о расширениях оболочки, установленных на вашем компьютере, и позволяет вам легко отключать и включать каждое расширение оболочки.

ShellExView можно использовать для решения проблем контекстного меню в среде Explorer. Для получения дополнительной информации прочитайте следующую статью: Щелчок правой кнопкой мыши является медленным или странным поведением, вызванным обработчиками контекстного меню.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .