Excluir associação de arquivo do Windows usando o arquivo .reg

12

Pergunta: Usando um arquivo .reg, como faço para remover completamente uma associação de tipo de arquivo? Tentei, por exemplo, excluir, HKEY_CLASSES_ROOT\myextension_auto_filemas aparentemente isso não é suficiente.

Antecedentes: No Windows Vista, eu tenho um arquivo .reg que associa com êxito um tipo de arquivo a outro aplicativo que sempre precisa de alguns parâmetros passados ​​(por isso, basta associar o botão direito do mouse não basta; consulte o arquivo .reg ). No entanto, como o arquivo .reg, por algum motivo, só funciona com extensões de arquivos não associadas anteriormente, pretendo adicionar alguns comandos para excluir primeiro uma determinada associação de tipo de arquivo.

Philipp Lenssen
fonte

Respostas:

18

Vejo que você está escrevendo HKEY_CLASSES_ROOTcom esse arquivo reg na pergunta. Esta seção é uma visão mesclada de HKEY_LOCAL_MACHINE\Software\Classese HKEY_CURRENT_USER\Software\Classes.

O motivo pelo qual seu arquivo funciona apenas para arquivos não associados anteriormente é que ele grava para HKEY_CLASSES_ROOT redirecionar para a chave apropriada HKEY_LOCAL_MACHINE(a seção para padrões do sistema e configurações para todos os usuários). No entanto, você terá um problema porque as configurações de associação de arquivos HKEY_CURRENT_USER(que contêm configurações por usuário) substituem os padrões do sistema.

Além disso, se a extensão for controlada por uma associação "programas padrão", suas informações de associação de arquivos serão armazenadas HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<.ext>. Você pode verificar se o seu ramal tem essa associação, verificando a existência dessa chave.

Você pode editar seu .reg para funcionar com qualquer arquivo, incluindo arquivos associados anteriormente, duplicando-o para essas chaves em ambos HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER. Da mesma forma, você pode remover a associação excluindo as chaves apropriadas nas duas seções (incluindo o FileExtslocal).

Um arquivo .reg de trabalho para excluir uma associação para uma extensão específica se parece com isso (que exclui .blergassociações):

Windows Registry Editor Version 5.00

; Created with Default Programs Editor
; http://defaultprogramseditor.com/

; Delete Extension
[-HKEY_LOCAL_MACHINE\Software\Classes\.blerg]
[-HKEY_CURRENT_USER\Software\Classes\.blerg]
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.blerg]

No entanto , se você preferir não precisar se informar sobre os internos do registro e os vários aspectos misteriosos da associação de arquivos do Windows, recomendo que você use o Editor de Programas Padrão para fazer essas alterações - você pode até exportar uma ação para um arquivo .reg, que parece atender perfeitamente às suas necessidades.

O Editor de Programas Padrão exclui a extensão e salva como arquivo .reg

No seu caso, é tão simples como clicar File Type Settings, então Delete an extension. Selecione a extensão e, em vez de salvar no registro, pressione a seta pequena no Delete Extensionbotão e clique em Save to .reg file.... Isso produzirá um arquivo .reg completo e comentado dessa ação que você pode salvar ou distribuir para outras máquinas.

Fator Místico
fonte
1
Que resposta fantástica e bem explicada. Obrigado fator místico - isso funciona como um encanto!
Philipp Lenssen 7/10/09
1
+1 para o Editor de programas padrão. Mencionado em várias respostas, mas o encontrei aqui primeiro. Muito mais simples e, embora seja um utilitário para instalar, é muito focado em seu trabalho.
goodeye
3

Essa questão parece ter muitas suposições questionáveis.

Primeiro, por que você deseja usar um arquivo .reg para remover a associação de arquivo? Por que não fazer isso apenas na interface do usuário? Você está fazendo isso em várias estações de trabalho?

Segundo, não vejo por que o arquivo .reg ao qual você vinculou funcionaria apenas com extensões de arquivo não associadas anteriormente.

De qualquer forma, para excluir uma chave usando um arquivo .reg, prefixe um hífen ao nome da chave. Para remover um valor, defina-o como hífen. Tudo soletrado aqui .

Para remover uma associação de arquivo, você precisa excluir a chave da extensão do arquivo, por exemplo

[-HKEY_CLASSES_ROOT\.dat]

Isso por si só impediria que o arquivo fosse aberto, mas, para completar, você também deve remover a chave do nome do tipo, que era o valor padrão na chave de extensão do arquivo. Exemplo:

[-HKEY_CLASSES_ROOT\dat_auto_file]
itsadok
fonte
Obrigado Itsadok. Sim, idealmente, estou procurando fazê-lo por meio de um arquivo .reg, porque talvez eu queira distribuir o resultado (que é um editor de texto baseado em Ajax / atalho do aplicativo Chrome, rodando no localhost + no servidor). Para sua informação, sua solução parece deixar alguns traços da associação, mas a Factor Mystic a resolveu.
Philipp Lenssen 7/10/09