У меня есть несколько сторонних приложений, которые добавляют свои действия в меню, которое активируется путем щелчка правой кнопкой мыши по файлам в проводнике 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-битных приложений.
Большое спасибо Арджану за то, что он задал правильные вопросы, и Гречу за то, что он предложил ключевой инструмент для диагностики основной проблемы. Я собираюсь принять ответ Харримка, так как он на самом деле ближе всего подходит к основному ответу, и я не думаю, что есть способ поделиться щедростью, но я хочу, чтобы вы, ребята, знали, что ваша помощь была решающей.