Как исправить каталог связанной программы расширения

334
Dominique

На моем ПК с Windows-10 есть несколько файлов с расширением .dmupgrade. Те должны быть открыты с программой C:\Program Files\<Company>\TaskbarUtility.exe.

У меня также есть другая версия TaskbarUtility.exeна моем компьютере, в каталоге C:\<Company>\Tools\TaskbarUtility\.

По неизвестной причине, при двойном щелчке по .dmupgradeфайлу, программа C:\<Company>\Tools\TaskbarUtility\TaskbarUtility.exeоткрывается, поэтому я попытался изменить это: я щелкнул правой кнопкой мыши по *.dmupgradeфайлу, нажал Changeкнопку Opens with, выбрал файл C:\Program Files\<Company>\TaskbarUtility.exeи нажал Ok.
При двойном щелчке кажется, что программа C:\<Company>\Tools\TaskbarUtility.exeснова используется для открытия файла.

Я искал в реестре, в следующем месте:

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

Это дает только TaskbarUtility.exeв качестве ответа (без каких-либо ссылок на каталоги). Ключ HKEY_CLASSES_ROOT\.dmupgradeсуществует, но не заполнен.

Я проверил PATHпеременную окружения, и, видимо, там нет каталога C:\<Company>\Tools.

Я проверил C:\Program Files\<Company>\Tools\TaskbarUtility.exe(с помощью приложения эмулятора Ubuntu), это не ссылка на другую программу:

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

Таким образом, мой вопрос: когда я настраиваю расширение файла, которое будет открыто с определенной программой, как Windows узнает, в каком каталоге искать эту программу? Можно ли справиться с этим с помощью WMICкоманд?

заранее спасибо

0
I'd also check with `assoc .dmupgrade` in a cmd window and look up the value with ftype. LotPings 5 лет назад 0
@LotPings: thanks. That solved my problem indeed. Please add your comment as an answer and I'll accept it. Dominique 5 лет назад 0

1 ответ на вопрос

1
LotPings

В то время как некоторые люди позорят assocи ftypeбесполезны в этом связанном вопросе и ответе,
вышеупомянутый вопрос - свидетельство противоположного.

Оба assocи ftypeявляются внутренними командами к cmd.exe

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

Вернет тот же текст справки:

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. 

Но файла нет (поэтому в PowerShell это не работает). То же самое относится и к ftype.

Чтобы посмотреть, какой тип файла связан с расширением (здесь .txt):

> assoc .txt .txt=txtfile 

Чтобы посмотреть, какая команда используется для открытия этого типа файла:

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

Для других глаголов вы должны пройти путь через реестр

> 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" 

Изменить: приложение к первоначальному вопросу:
Настоящим результаты assocи ftypeдо:

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

Следующая команда была запущена:

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

Сначала это не удалось, потому что мне нужно было выполнять это как администратор :-), но после открытия приглашения администратора моя проблема была решена.