Программа C ++ нуждается в ассоциации файлов

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

Разрабатывая в Windows 7 Professional, я настроил ассоциацию для открытия моих файлов по двойному щелчку, щелкнув правой кнопкой мыши файл-> Открыть с помощью ...-> Выбрать программу по умолчанию ...-> Обзор ..., а затем Msgstr "Всегда использовать выбранную программу, чтобы открыть файл этого типа." Хороший. Он сделал именно то, что нужно. Я собирался отправить мою программу с инструкциями для пользователей, чтобы сделать то же самое.

Однако, когда я переместил местоположение двоичного файла, я вижу, что «Всегда использовать» теперь серым / нечувствительным, поэтому, хотя я мог просматривать новый двоичный файл, я не мог сделать его по умолчанию. Поскольку я думал, что у моих пользователей тоже будут с этим проблемы, я хотел посмотреть, смогу ли я позаботиться о сопоставлении при установке или запуске программы.

Я посмотрел на установщик Windows примерно на 5 минут, прежде чем определить, что он гораздо сложнее и сложнее, чем мне нужно (для моих нужд вполне достаточно zip-файла, кроме сопоставления этого файла).

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

На основании информации наhttp://www.cplusplus.com/forum/windows/26987/ а такжеhttp://msdn.microsoft.com/en-us/library/cc144148(v=vs.85).aspx Мне удалось при запуске моей программы открыть HKEY_CLASSES_ROOT \ .blahblah и подтвердить (и изменить при необходимости) текст по умолчанию, чтобы он был точным описанием файла (заменив некоторый текст, который мог быть создан по умолчанию, когда я делал ручное объединение прошлым летом). Однако, когда дело дошло до создания команды HKEY_CLASSES_ROOT \ firm.app.1 \ shell \ open \, моя оболочка RegCreateKeyEx (), которая отлично работает для изменения значения \ .blahblah, теперь дает код возврата 5, очевидно, отсутствие разрешения.

После дальнейших исследований кажется, что модель разрешений может вызвать сбой всех таких запросов. Кто-нибудь может подтвердить или опровергнуть это? Если подтвердите, есть ли хорошая рекомендация, которую я должен изучить по этому вопросу?

В противном случае, каковы предложения? Стоит ли кусать пулю и изучать установщик Windows? Или есть способ получить разрешения, необходимые для редактирования реестра при первом запуске собственного программного обеспечения?

Заметьте, я занимаюсь разработкой Visual Studio 2008 для Windows 7 Professional, и хотя я все еще начинающий программист Windows, я занимался C ++ с 80-х годов на Unix / Linux ...

Ответы на вопрос(2)

Ваш ответ на вопрос