Onde o Windows armazena suas configurações “Abrir com”?

Estou tentando verificar programaticamente associações de arquivos pela extensão de arquivo (por exemplo, arquivos .jnlp ). Eu continuo lendo isso

 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JNLPFile\Shell\Open\Command 

é a chave do registro para verificar. No entanto, se você alterar a associação pelo Windows Explorer:

Abrir Com> Escolher Programa> (Sempre use o programa selecionado)

a alteração não é refletida de forma alguma nessa chave do Registro. Onde mais esta informação é armazenada?

Dê uma olhada em:

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\ 

e a subchave dessa é a extensão que você reatribuiu. Abaixo disso, haverá as subchaves UserChoice e OpenWithList que conterão sua redefinição.

Você também pode querer ler http://support.microsoft.com/kb/950505, que fala sobre o seu problema.

Esta é uma pesquisa em duas partes.

Primeiro, você procura o valor padrão de HKEY_CLASSES_ROOT \ [file_extension]. Para suas extensões, .jnlp, o valor é “JNLPFile”. Vamos chamar isso de [file_descriptor].

Agora você pode procurar o valor padrão de HKEY_CLASSES_ROOT \ [file_descriptor] \ Shell \ [action] \ command (onde [action] é a ação do shell que você está interessado, por exemplo: Open, Print, Edit, etc.).

Em:

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jnlp\OpenWithList 

Dica: Editar> Localizar é bastante útil nessas situações. 🙂