Другим решением было бы написать расширение оболочки, но это
обескуражен в .NET, и выглядит немного излишним для этой задачи.
где ты прочитал это обескураживает? Дино Эспозито написал целую книгу по расширениям оболочки, написанную на C #, Google для нее:)
в ShellExtension ваш код выполняется, и вы имеете полный контроль над тем, что отображать и когда, это не избыточное количество - это то, что вам нужно в этом случае.
Реестр содержит регистрацию ShellExtension (плюс другие вещи), поэтому я считаю, что вам следует придерживаться подхода расширения кодированной оболочки, не затрагивая реестр вручную, поскольку во втором случае у вас меньше контроля над тем, что происходит.