从命令行在 Windows 10 中获取文件类型关联的最佳方法?

Pos*_*rte 7 powershell command-line windows-10

我知道我可以在命令行上使用 assoc 和 ftype 来获取文件类型关联。所以当我这样做时:

在此处输入图片说明

我的印象是 .html 文件是用 iexplorer 打开的。

但是 html 文件使用 chrome 打开,因为 chrome 已被设置为 html 文件的默认应用程序。

在此处输入图片说明

当程序确实用 chrome 打开时,为什么 ftype 会给我 iexplorer?

Pos*_*rte 5

似乎 ftype 和 assoc 在运行 Windows 8 或更高版本的系统上非常无用。

这是因为 Microsoft 在 Windows 8 中决定用户只能通过内置 GUI 设置默认程序。这可能是由于安全原因和应用程序劫持文件类型关联的问题。

因此引入了一个新的注册表项,Windows 现在将用户选择写入

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extension>\UserChoice
Run Code Online (Sandbox Code Playgroud)

该键包含一个 Prog-Id 和一个哈希值。正确的 Hash 值证明 UserChoice ProgId 值是由用户设置的,而不是由任何其他应用程序设置的。如果哈希无效,Windows 会将用户选择重置为默认应用程序。

ftype command但是不知道上面的注册表项。

它读取HKCR\htmlfile\shell\open\command\(Default)注册表项并打印出结果。

因此,ftype 命令的结果无法用于确定哪个应用程序与特定文件扩展名相关联。