Como corrigir o diretório do programa associado de uma extensão

0

No meu PC Windows-10, existem alguns arquivos com extensão .dmupgrade . Aqueles devem ser abertos com o programa C:\Program Files\<Company>\TaskbarUtility.exe .

Eu também tenho outra versão do TaskbarUtility.exe no meu PC, no diretório C:\<Company>\Tools\TaskbarUtility\ .

Por um motivo desconhecido, enquanto clica duas vezes no arquivo .dmupgrade , o programa C:\<Company>\Tools\TaskbarUtility\TaskbarUtility.exe é aberto, então eu tentei mudar isso: cliquei com o botão direito do mouse no arquivo *.dmupgrade , pressionado o botão Change em Opens with , escolhi o arquivo C:\Program Files\<Company>\TaskbarUtility.exe e pressionei Ok .
Ao clicar duas vezes, parece que o programa C:\<Company>\Tools\TaskbarUtility.exe é usado novamente para abrir o arquivo.

Estou pesquisando no registro, no seguinte local:

 Computer\
   HKEY_CURRENT_USER\
     Software\
       Microsoft\
         Windows\
           CurrentVersion\
             Explorer\
               FileExts\
                .dmupgrade\
                  OpenWithList

Isso só dá TaskbarUtility.exe como resposta (sem qualquer referência de diretório). A chave HKEY_CLASSES_ROOT\.dmupgrade existe, mas não está preenchida.

Eu verifiquei a variável de ambiente PATH e aparentemente o diretório C:\<Company>\Tools não está presente lá.

Eu verifiquei o C:\Program Files\<Company>\Tools\TaskbarUtility.exe (usando um aplicativo emulador do Ubuntu), não é um link para o outro programa:

Prompt>file TaskbarUtility.exe
TaskbarUtility.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows

Então, minha pergunta é: quando eu configuro uma extensão de arquivo para ser aberta com um programa específico, como o Windows sabe em qual diretório procurar por este programa? É possível manipular isso usando os comandos WMIC ?

Obrigado antecipadamente

    
por Dominique 28.06.2018 / 10:22

1 resposta

1

Enquanto algumas pessoas envergonham assoc e ftype como inúteis neste relacionado Q&A ,
a questão acima é evidência do contrário.

Tanto assoc como ftype são comandos internos para o cmd.exe

assoc /?
assoc.com /? 
assoc.exe /?
help assoc

Irá retornar o mesmo texto de ajuda:

Displays or modifies file extension associations

ASSOC [.ext[=[fileType]]]

 .ext      Specifies the file extension to associate the file type with
 fileType  Specifies the file type to associate with the file extension

Type ASSOC without parameters to display the current file associations.
If ASSOC is invoked with just a file extension, it displays the current
file association for that file extension.  Specify nothing for the file
type and the command will delete the association for the file extension.

Mas não há arquivo presente (Portanto, isso não funciona no PowerShell, por exemplo) O mesmo se aplica ao ftype.

Para pesquisar qual tipo de arquivo está associado a uma extensão (aqui .txt):

> assoc .txt
.txt=txtfile

Para procurar o comando para abrir , este tipo de arquivo é usado:

> ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

Para outros verbos você tem que tomar a rota pelo registro

> Reg query "HKCR\txtfile" /S
HKEY_CLASSES_ROOT\txtfile
    (Default)    REG_SZ    Text Document
    EditFlags    REG_DWORD    0x210000
    FriendlyTypeName    REG_EXPAND_SZ    @%SystemRoot%\system32\notepad.exe,-469

HKEY_CLASSES_ROOT\txtfile\DefaultIcon
    (Default)    REG_EXPAND_SZ    %SystemRoot%\system32\imageres.dll,-102

HKEY_CLASSES_ROOT\txtfile\shell

HKEY_CLASSES_ROOT\txtfile\shell\open

HKEY_CLASSES_ROOT\txtfile\shell\open\command
    (Default)    REG_EXPAND_SZ    %SystemRoot%\system32\NOTEPAD.EXE %1

HKEY_CLASSES_ROOT\txtfile\shell\print

HKEY_CLASSES_ROOT\txtfile\shell\print\command
    (Default)    REG_EXPAND_SZ    %SystemRoot%\system32\NOTEPAD.EXE /p %1

HKEY_CLASSES_ROOT\txtfile\shell\printto

HKEY_CLASSES_ROOT\txtfile\shell\printto\command
    (Default)    REG_EXPAND_SZ    %SystemRoot%\system32\notepad.exe /pt "%1" "%2" "%3" "%4"

Editar: aplicativo para a pergunta original:
Por este meio, os resultados de assoc e ftype antes:

Prompt>assoc .dmupgrade
.dmupgrade=dmupgrade

Prompt>ftype dmupgrade
dmupgrade=C:\<Company>\Tools\TaskbarUtility\TaskbarUtility.exe "%l"

O seguinte comando foi lançado:

Prompt>ftype dmupgrade=C:\Program Files\<Company>\TaskbarUtility.exe "%1"

Isso falhou no início, porque eu precisava fazer isso como administrador :-), mas depois de abrir um prompt de administrador, meu problema foi resolvido.

    
por 28.06.2018 / 13:16