Диалог «Открыть с помощью» игнорирует мой выбор

41

Я использую Windows 7 x64. У меня есть тип файла, который я хочу связать с Microsoft Access 2003.

Я щелкаю правой кнопкой мыши по файлу и выбираю Открыть с помощью> Выбрать программу по умолчанию. В диалоговом окне «Открыть с помощью» я выбираю кнопку обзора. Я выбираю Program Files (x86) \ Microsoft Office \ Office11 \ msaccess.exe и нажимаю «Открыть».

Я снова оказался в диалоговом окне «Открыть с помощью», но ничего не изменилось. Access не указан как программа для открытия файла. Исходная программа (Adobe Acrobat), связанная с этой программой, все еще выбрана.

Любые советы о том, как заставить эту ассоциацию работать?

Дэвид Робисон
источник
4
Да, это странная ошибка, которая долго раздражала меня и несколько версий Windows. Это происходит только периодически, поэтому я не отслеживал, какие исполняемые файлы демонстрируют / запускают такое поведение, поэтому я не смог найти какой-либо уникальной общности между ними.
Synetech
это происходит потому, что при хранении связей Windows использует только имя исполняемого файла, а не полный путь. Полное объяснение и решение: superuser.com/a/886139/425338
Диего

Ответы:

49

Причиной, скорее всего, является странная ошибка в реестре, возникшая по неизвестной причине.

Убедитесь, что значение ключа в следующем месте содержит правильный путь:

HKEY_CLASSES_ROOT\Applications\YOURFILE.EXE\shell\open\command

Найдите имя приложения и расширение файла в реестре, чтобы проверить, не повреждены ли другие записи.

Joozey
источник
4
Это была проблема для меня .. как только я изменил значение в этом точном месте, он работал нормально, как только я попытался просмотреть -> снова открыть
abelito
Когда значение ключа не указывает на правильное местоположение приложения, измените его, как указано в другом ответе здесь
sancho.s Восстановите Монику
2
Это исправило это для меня. Проблема состояла в том, что я обновил его с 32-разрядного до 64-разрядного, так что он смотрел Program Files (x86)вместоProgram Files
endolith
2
Исправление пути к приложению в этом разделе реестра исправило его. Появляется, когда я удалил приложение, а затем переустановил с другим путем, этот раздел реестра не был обновлен. Похоже, это ошибка Win7, что если запись для приложения существует, Windows завершает процесс выбора приложения без изменения записи реестра; даже если выбранный вами путь не соответствует существующему значению записи реестра. Запрещает пользователям изменять путь к существующему приложению с помощью графического интерфейса «Открыть с помощью».
Чето
3
Поздравляю MS .... 6 с половиной лет спустя, и мы все еще делаем это.
ZaLiTHkA
14

На самом деле это очень простая проблема. Это происходит потому, что Windows использует ассоциации, основанные исключительно на базовом исполняемом имени программы .

Всякий раз, когда вы связываете программу с расширением, программа будет присутствовать в HKEY_CLASSES_ROOT\Applicationsсписке, где имена ключей являются базовыми именами исполняемых файлов (например, MSACCESS.EXEи AcroRD32.exe). Вы не можете связать другую программу с расширением файла, если она имеет такое же имя исполняемого файла . Случилось так, что вы, вероятно, переместили программное обеспечение в другое место (вы можете видеть, что это происходит в основном с переносными версиями программного обеспечения), и когда вы попытаетесь указать на него, Windows увидит, что имя уже зарегистрировано, и вместо этого попытается использовать зарегистрированное путь. Когда он не может найти это, он молча игнорирует ошибку и представляет диалог обратно без каких-либо изменений.

Решение одинаково просто: просто исправьте или удалите ключ и попробуйте снова. Это сработает.HKCR\Applications\YourAppName.exe

Диего Нунес
источник
Это также происходит, когда у вас установлено несколько версий Adobe Photoshop (через Creative Cloud), каждая из которых использует одно и то же имя исполняемого файла.
Phrogz
Это оно! Очень глупо, они должны хранить путь или хеш.
Филипп Ф
11

Раздел реестра, показанный выше, был моей проблемой.

HKEY_CLASSES_ROOT\Applications\MSACCESS.EXE\shell\open\command

Должен прочесть:

"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "%1"

для доступа 2010.

Там еще была запись:

"C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "%1"  

для офиса 2007.

Файл не существует в этом месте, поэтому он не отображался в селекторе приложений, пока я не изменил запись.

После обновления реестра я смог выбрать Microsoft Access непосредственно из списка доступных приложений.

Майк Роу
источник
4

У меня была похожая проблема с Sublime Text. Это не будет отображаться в Open Withдиалоге, независимо от того, что я сделал. Вот как я это решил.

  1. Открыть regeditили любой редактор реестра.
  2. Перейдите к: \HKEY_CURRENT_USER\Software\Classes\Applications\sublime_text.exe\shell\open.
  3. Удалите все подключи.
  4. Создайте подключ commandсо значением "C:\path\to\sublime_text.exe" "%1"(двойные кавычки включены!).

Конечно, это будет работать с любой программой, не только с Sublime Text. Просто замените sublime_text.exeисполняемый файл вашей программы.

Zenadix
источник
2

Если все не удается, вы можете отредактировать реестр вручную (сначала сделайте резервную копию куста / ключа):

Каждый тип файла (расширение), с которым связано приложение, имеет ключ реестра в разделе HKEY_CLASSES_ROOT.

Или используйте FileAsoc , редактор файловых ассоциаций Windows

FileAsoc - бесплатная программа с открытым исходным кодом.

Или File Type Doctor , который является частью Creative Element Power Tools (условно-бесплатная)

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

багор
источник
Их способ изменить это через реестр указан в другом ответе здесь
sancho.s Восстановите Монику
1
FileAsoc для меня не кажется хорошей рекомендацией, для этого требуется довольно своеобразная среда выполнения VB (которая не установлена ​​по умолчанию и, кажется, трудно найти, ссылки со страницы FileAsoc на них устарели. И рекомендованный "Creative Element" Электроинструменты "также больше не доступны!
кодирование
1
Кажется, эта программа отвалилась от Интернета. Вместо этого попробуйте FileTypesMan (работал для меня): nirsoft.net/utils/file_types_manager.html
roblogic
1

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

HKEY_CURRENT_USER\Software\Classes\Applications/wmplayer.exe\shell\open\command

от

"C:\Program Files\Windows Media Player\wmplayer.exe" "%1"

в

"C:\Programme\Windows Media Player\wmplayer.exe" "%1"

Где Programmeнаходится локализованная (немецкая) версия «Программных файлов». Это не имеет никакого смысла для меня (например, когда я нажимаю «копировать путь» в меню оболочки проводника Windows, путь содержит Program Files. И когда я добавляю Media Player, просматривая в диалоге «открыть с», он также добавляется с Program Files), но это сработало как решение, где просто удалить ключ reg не удалось.

Kastenfrosch2
источник
0

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

Панель управления -> Программы -> Программы по умолчанию -> Установить ассоциации

Или просто введите «Открыть файл» в меню «Пуск» и выберите «Сделать тип файла всегда открытым с определенной программой».

бледная лошадь
источник
0

Недавно у меня была похожая проблема со всеми ассоциациями моих медиафайлов, и, похоже, это из-за противного медиаплеера под названием DAPlayer. Даже в Control Panel/ Programs/ Default Programs/ Set Default Programsя не смог изменить программу по умолчанию. Очевидно, он установил UserChoiceключи HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExtsдля всех своих файловых ассоциаций для доступа только для чтения, даже для администраторов. Даже после удаления программы все мои ассоциации оставались в «Неизвестном приложении».

Самый простой способ исправить это - перейти к этому ключу в Regedit, щелкнуть его правой кнопкой мыши и выбрать «Разрешения», нажать кнопку «Дополнительно», установить флажок «Заменить все разрешения дочернего объекта» и нажать кнопку «ОК».

Или, если вы предпочитаете командную строку, вы можете использовать инструмент Windows Resource Kit под названием SubInACL :

subinacl /subkeyreg HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts /grant=administrators=f /grant=system=f /grant="%USERNAME%"=f

Но будьте осторожны с такими массовыми операциями реестра, как это: неправильное использование может привести к неработоспособности вашей системы! Я не несу ответственности за ваши действия.

Тревор Робинсон
источник
0

NirSoft часто спасает: http://www.nirsoft.net/utils/file_types_manager.html

Это FileTypesMan (диспетчер типов файлов для Windows) от NirSoft.

Джим Хойл
источник
Добро пожаловать в Супер пользователя! На этом сайте Q & A мы стараемся дать хорошие ответы на вопросы людей. Частично это включает в себя ответ в своем сообщении, вместо того , чтобы просто предоставить ссылку на другую страницу, которая может ответить на вопрос . Пожалуйста, отредактируйте свой ответ, чтобы включить фактическое решение для размещенного вопроса. Обратитесь к разделу Как ссылаться на материалы, написанные другими для помощи.
cascer1
0

Хороший способ исправить это - удалить все записи, связанные с желаемым приложением.

Например:

Если файл .exe для размещения в списке « Открыть с помощью» - это NOTEPAD ++. EXE

1 - Откройте regedit и найдите для notepad ++. Exe

2 - Удалить все найденные записи

3 - Теперь попробуйте снова открыть диалог

... Блин !!

PYK
источник