Existem várias maneiras pelas quais isso pode ser feito. Por exemplo, você pode mexer com o registro usando ferramentas padrão de edição de registro. No entanto, há também uma maneira de afetar isso usando a linha de comando. Como isso é provavelmente mais fácil para automação, essa é uma boa maneira de demonstrar isso. Como sua pergunta apareceu em uma extensão composta de .abc
, eu uso isso.
Em uma linha de comando, acesse um prompt de comando. Se você tiver o UAC habilitado, isso precisa ser um prompt de comando elevado.
Primeiro, crie um tipo de arquivo. por exemplo:
ftype zzzfile=C:\Windows\System32\Notepad.exe %%1
Em seguida, veja seus resultados:
ftype zzzfile
e reg query HKCR\zzzfile\SHELL\OPEN\COMMAND /ve
Notas:
- Ao criar este tipo de arquivo, o "%% 1" serve para escapar do sinal de porcentagem. Os dois sinais percentuais tornam-se um. Então, quando você visualizar os resultados, ele simplesmente mostrará "% 1" em vez de "%% 1".
- Ao criar o tipo de arquivo, é necessário especificar todo o nome do executável. As coisas não vão funcionar bem se você acabou de dizer "Notepad". (Por "coisas não funcionam bem", quero dizer que o Windows irá perguntar ao usuário o que fazer com a extensão.) O C: \ Windows \ System32 \ realmente parecia opcional, mas o ". Exe" não. / li>
Em seguida, associe uma extensão ao seu tipo de arquivo. Novamente, isso modifica o comportamento do sistema, portanto, se o UAC estiver ativado, acesse um prompt de comando elevado. Executar:
assoc .abc=zzzfile
Agora, a partir desse prompt de comando ou de um não elevado, você pode verificar seus resultados:
assoc .abc
e start filename.abc
(testado com o Windows 7 x64).
Nota: Durante os testes preliminares, eu mucked com o GUI. Isso impediu o uso de FTYPE e ASSOC de funcionar corretamente, com a mesma extensão.
Detectar o problema foi bastante simples. Consertar isso não foi.
Consegui encontrar o problema usando isto:
REG QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.abc /s
Tragicamente, isso NÃO funcionou para excluí-lo:
REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.abc
e REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.abc\UserChoice /v Progid
Confirmei o problema com um programa gráfico: REGEDIT no UserChoice, em seguida, Editar, "Permissões ...", (meu nome de usuário), Avançado, (guia Permissões) mostrou que eu tinha um DENY, digite Especial. Edit ... de lá mostrou "Set Value" teve Negar.
Uma maneira de corrigir isso a partir da linha de comando parece ser REGINI, do kit de recursos do NT 4. Para fazer as coisas dessa maneira, eu precisava descobrir meu SID.
wmic USERACCOUNT Obter nome, SID (Encontre minha conta. O SID começa com "S -".)
Crie um arquivo de texto. Eu decidi chamar de "fix.txt".
KB 254031 indicou que a primeira linha é "\ Registry \ User \" seguida do SID do usuário . Então o arquivo de texto vai começar com isso.
Apesar de alguns exemplos em vários artigos da Microsoft na Microsoft, a sintaxe pode ser tão curta quanto uma única linha, como mostrado (mas precisando de personalização ...)
\Registry\User\S-#-#-##-##########-##########-##########-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.abc\UserChoice [1 5 7 17]
(Naturalmente, ajuste o ".abc" para qualquer extensão que você esteja tentando consertar. Os # também precisam ser substituídos, para que um SID válido seja usado.)
Em seguida, use esse arquivo de texto com: REGINI fix.txt
Agora que a chave não está nos impedindo de fazer alterações, podemos excluir o valor Progid da chave UserChoice. Na verdade, vá em frente e exclua a chave inteira relacionada a essa extensão.
REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.abc
Então, essa chave de registro não foi mais substituída, então os resultados de FTYPE e ASSOC estavam entrando em vigor conforme desejado.