在我的 Windows-10 PC 上,有一些文件扩展名是.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
命令来处理这个问题?
提前致谢
答案1
尽管一些人们羞辱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"
这首先失败了,因为我需要以管理员身份执行此操作:-),但打开管理员提示符后,我的问题就解决了。