Asociación de extensión de archivo de Windows 7

Me refiero específicamente a Windows 7.

Tengo un código que asocia una cierta extensión con mi aplicación como lo propone webJose en la siguiente página:¿Qué claves de registro son responsables de la asociación de extensión de archivo? (Sin embargo, escribí correctamente en HKEY_CURRENT_USER \ Software \ Classes en lugar de HKEY_CLASSES_ROOT como se sugiere)

Lo anterior funciona inicialmente, o si no hay otros programas asociados con la extensión. Sin embargo, después de usar Windows 7 integrado "Elegir programa predeterminado ..." (que se encuentra en el menú contextual del archivo con el botón derecho del mouse en "Abrir con"), vuelve a asociar la extensión con cualquier programa nuevo que elija.

Lo que sucede en este punto es que el sistema cambia "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \\ UserChoice", por lo que el nuevo programa seleccionado se hace cargo.

Ejecutar el código anterior para recuperar el control sobre la extensión no funcionará. La única forma de recuperar el control es:

Edición de UserChoice -> Progid value, que no está permitido (ni programáticamente ni usando regedit.exe - acceso denegado).O bien, eliminar el valor UserChoice y asegurarse de que su aplicación sea la primera en el valor MRUList en \ OpenWithList (esto se puede lograr utilizando regedit.exe pero no mediante programación)

Mi pregunta es: ¿hay alguna manera de lograr esto mediante programación? ¿Qué valores de registro se pueden cambiar para recuperar el control de una extensión, después de que se asocie con otro programa?

Sé que puede parecer obvio que si un usuario a través del explorador configura la aplicación asociada a una extensión, se espera que lo haga de la misma manera para volver a asociar la extensión a una aplicación diferente.

Sin embargo, el problema es que tengo un botón en mi aplicación que usa el código mencionado anteriormente para verificar la asociación de extensión con mi aplicación. Desafortunadamente con la situación anterior, mi aplicación muestra un mensaje que confirma que la extensión ya está asociada con éxito cuando no lo está. Entonces, ¿hay alguna forma de evitar esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta