Associação de extensão de arquivo do Windows 7

Refiro-me especificamente ao Windows 7.

Eu tenho um código que associa uma certa extensão ao meu aplicativo, conforme proposto por webJose na seguinte página:Quais chaves de registro são responsáveis pela associação da extensão de arquivo? (No entanto, eu escrevo corretamente para HKEY_CURRENT_USER \ Software \ Classes em vez de HKEY_CLASSES_ROOT conforme sugerido)

O procedimento acima funciona inicialmente ou se não houver outros programas associados à extensão. No entanto, depois de usar o Windows 7 interno "Escolha o programa padrão ..." (encontrado no menu de contexto do arquivo com o botão direito do mouse em "Abrir com"), ele associa novamente a extensão a qualquer novo programa que você escolher.

O que acontece neste momento é que "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \\ UserChoice" é alterado pelo sistema e, portanto, o programa recém-selecionado assume o controle.

A execução do código acima, para recuperar o controle sobre a extensão, não funcionará. A única maneira de recuperar o controle é:

Editando o valor UserChoice -> Progid, que não é permitido (nem programaticamente nem usando regedit.exe - acesso negado).Ou excluindo o valor UserChoice e certificando-se de que seu aplicativo seja o primeiro no valor MRUList em \ OpenWithList (isso pode ser obtido usando o regedit.exe, mas não por meio de programação)

Minha pergunta é: existe uma maneira de conseguir isso programaticamente? Quais valores de registro podem ser alterados para recuperar o controle de uma extensão, depois de estar associado a outro programa?

Sei que pode parecer óbvio que, se um usuário através do explorer definir o aplicativo associado a uma extensão, é esperado que ele faça da mesma maneira novamente para associar novamente a extensão a um aplicativo diferente.

O problema, porém, é que tenho um botão no meu aplicativo que usa o código mencionado acima para verificar a associação de extensões ao meu aplicativo. Infelizmente com a situação acima, meu aplicativo exibe uma mensagem confirmando que a extensão já está associada com êxito quando não está! Então, há uma maneira de contornar isso?

questionAnswers(2)

yourAnswerToTheQuestion