Если вы используете .net 3.5+, рассмотрите возможность использования именованных каналов . Я видел, как они очень эффективно используются для связи между расширением / плагином firefox и приложениями .net с использованием соответствующей библиотеки / DLL. (Плагин Firefox действительно требовал немного собственного кода на C ++)
Другой альтернативой может быть включение какого-либо сервера в ваше приложение и позволить вашему расширению Firefox взаимодействовать с ним через сокеты / tcp. Если вы используете HTTP в качестве протокола, вы могли бы общаться, выполняя такие действия, как нажатие http://localhost:12345/getdata?id=1 со своего внутреннего номера. Общение через HTTP должно быть относительно простым с обеих сторон, но обязательно сделайте хорошую модель угроз, чтобы вы могли идентифицировать и смягчить любые проблемы безопасности, возникающие при запуске сервера на коробке.
Помимо этого, я бы выполнил поиск .net / windows IPC и увидел бы, какие другие механизмы Windows IPC могли бы подойти. Они должны быть более надежными, чем написание текстовых файлов и ключей реестра. (Я предвижу, что маршрут буфера обмена будет очень хрупким.) Этот вопрос может быть хорошим началом.