2013-02-21 4 views
0

Необходимо добавить элемент в контекстное меню определенного типа. В Windows 7 и предыдущих версий, это делается путем добавленияКонтекстное меню типа специфического типа Windows 8

HKEY_CLASSES_ROOT\<extension>\shell\<commandname>\command 

ключ со значением

@="<path_to_app> \"%1\"" 

в реестр. В Windows 8 это не работает. Даже после удаления PersistentHandler ключа соответствующего типа: registry screenshot

Что интересно, если ключи оболочки/команд записываются в HKEY_CLASSES_ROOT\*\ разделе, пункт контекстного меню отображается в меню для всех файлов, как и ожидался, но это огромные накладные расходы в случае, если то, что я необходимо добавить мое приложение только к 2-3 типам файлов, не нарушая существующих ассоциаций. Я использую Microsoft.Win32.Registry.ClassesRoot в C# для реализации этой логики, но проблема, безусловно, не в коде, потому что: a) она работает в Windows 7; b) ручное редактирование с использованием предупреждений администратора в Windows 8 не добавляет необходимой ассоциации.

ответ

1

«HKEY_CLASSES_ROOT \ SystemFileAssociations \ video» является «реальным» поддеревом для .avi-файлов в системах с медиа-плеером, отличным от WMP. .mkv тип файла, который меня интересовал, также создает другое поддерево - «mkv_auto_file». Не знаю, почему это было сделано и где оно задокументировано, но моя проблема была решена. Спасибо Хансу за руководство.

2

Вы, должно быть, заметили, что там не было «оболочки», хотя файлы .avi, безусловно, имеют пункт контекстного меню Open. Есть дополнительный уровень косвенности, обратите внимание на значение по умолчанию для ключа .avi. Это ProgId, связанный с расширением имени файла .avi.

Следуйте за этим ключом WMP11.AssocFile.AVI, чтобы найти команды оболочки, добавьте туда свою команду.

+1

Протестировано на пустой виртуальной машине, кажется, работает. Проблема мысли была решена, но затем протестирована на рабочем компьютере и не удалась, потому что есть другое приложение, связанное с необходимым типом, и WMP11.AssocFile.AVI также не имеет никакого эффекта. Попробуем HKEY_CLASSES_ROOT \ SystemFileAssociations \ video и посмотрим, как это происходит. – Jaded

Смежные вопросы