Необходимо добавить элемент в контекстное меню определенного типа. В Windows 7 и предыдущих версий, это делается путем добавленияКонтекстное меню типа специфического типа Windows 8
HKEY_CLASSES_ROOT\<extension>\shell\<commandname>\command
ключ со значением
@="<path_to_app> \"%1\""
в реестр. В Windows 8 это не работает. Даже после удаления PersistentHandler ключа соответствующего типа:
Что интересно, если ключи оболочки/команд записываются в HKEY_CLASSES_ROOT\*\
разделе, пункт контекстного меню отображается в меню для всех файлов, как и ожидался, но это огромные накладные расходы в случае, если то, что я необходимо добавить мое приложение только к 2-3 типам файлов, не нарушая существующих ассоциаций. Я использую Microsoft.Win32.Registry.ClassesRoot
в C# для реализации этой логики, но проблема, безусловно, не в коде, потому что: a) она работает в Windows 7; b) ручное редактирование с использованием предупреждений администратора в Windows 8 не добавляет необходимой ассоциации.
Протестировано на пустой виртуальной машине, кажется, работает. Проблема мысли была решена, но затем протестирована на рабочем компьютере и не удалась, потому что есть другое приложение, связанное с необходимым типом, и WMP11.AssocFile.AVI также не имеет никакого эффекта. Попробуем HKEY_CLASSES_ROOT \ SystemFileAssociations \ video и посмотрим, как это происходит. – Jaded