El programa C ++ necesita una asociación de archivos

Estoy distribuyendo un producto gratuito que lee y escribe archivos de texto con una extensión única. Esperaba que al hacer doble clic en dicho archivo, la aplicación se iniciara automáticamente.

Al desarrollar en Windows 7 Professional, configuré una asociación para abrir mis archivos al hacer doble clic, haciendo clic con el botón derecho en el archivo-> Abrir con ...-> Elegir programa predeterminado ...-> Explorar ... seguido de "Usar siempre el programa seleccionado para abrir este tipo de archivo". Bueno. Hizo justo lo que necesitaba. Iba a enviar mi programa con instrucciones para que los usuarios hicieran lo mismo.

Sin embargo, cuando moví la ubicación del binario, veo que "Usar siempre" ahora está en gris / no es sensible, así que mientras podía buscar el nuevo binario, no podía hacerlo por defecto. Como pensé que mis usuarios también tendrían problemas con esto, quería ver si podía hacer que la instalación o la ejecución del programa se encargara de la asignación.

Miré a Windows Installer durante unos 5 minutos antes de determinar que era mucho más potente y complejo de lo que necesitaba (para mis necesidades, un archivo zip sería suficiente, excepto por esta asignación de archivos).

Así que eché un vistazo a mi programa, al inicio, configuré el mapeo en sí mismo si ya no estaba allí. (Sé que este sería un comportamiento muy malo si estuviéramos hablando de un tipo de archivo común como .html o .jpg, pero en este caso es una extensión .blahblah que seguramente nadie más usa para nada).

Basado en información enhttp://www.cplusplus.com/forum/windows/26987/ yhttp://msdn.microsoft.com/en-us/library/cc144148(v=vs.85).aspx Pude tener mi programa, al inicio, abrir HKEY_CLASSES_ROOT \ .blahblah y confirmar (y cambiar si es necesario) el texto predeterminado para que sea una descripción precisa del archivo (reemplazando un texto que puede haber sido creado de forma predeterminada cuando hice el asociación manual el pasado verano). Sin embargo, cuando se trata de crear HKEY_CLASSES_ROOT \ firm.app.1 \ shell \ open \ command, mi contenedor RegCreateKeyEx () que funciona bien para cambiar el valor de \ .blahblah ahora está dando el código de retorno 5, aparentemente una falta de permiso.

Tras una investigación adicional, parece que el modelo de permisos puede hacer que todas esas solicitudes fallen. ¿Alguien puede confirmar o negar esto? Si confirma, ¿hay alguna buena referencia que deba estudiar al respecto?

De lo contrario, ¿cuáles son las sugerencias? ¿Debo morder la bala y estudiar Windows Installer? ¿O hay una manera de obtener los permisos que necesito para editar el registro cuando mi propio software se inicia la primera vez?

Tenga en cuenta que estoy desarrollando Visual Studio 2008 en Windows 7 Professional, y aunque todavía soy un programador amateur de Windows, he estado haciendo C ++ desde los 80 en Unix / Linux ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta