通过GPO更改Windows 10中的默认文件关联
在本文中,我们将研究如何在Windows 10和Windows Server 2019/2015/2012R2上管理默认文件关联。举例来说,我将向我们展示如何设置默认的浏览器应用程序以打开HTML文件,将这些设置导入XML文件,以及如何手动或者使用组策略(GPO)将文件关联设置部署到其他计算机。
Windows 10与以前的Windows版本之间的主要区别在于,现在我们无法通过组策略首选项的"注册表"或者"打开方式"功能来管理文件关联设置。但是,这是一个新的机会,可以将当前文件关联设置从参考计算机导出到XML文件,然后将此文件应用于其他计算机。我们还可以将配置的文件关联导出到Windows镜像,该镜像已部署到网络上的客户端(手动,通过WDS或者SCCM)。
如何在Windows 10上设置或者更改默认应用程序?
假设我们要使用Firefox浏览器在所有域计算机上打开.HTML文件(我们希望将此文件扩展名与应用程序关联)。
为此,我们需要一台具有Windows 10的参考计算机(在本示例中,使用的是当前内部版本1909)并安装了Firefox浏览器。要在文件扩展名和程序之间手动创建映射,请打开"设置"->"默认应用程序",然后单击"按文件类型选择默认应用程序"按钮。
在文件扩展名列表中找到.HTML文件,然后使用"选择默认值"按钮来更改默认程序,以将html文件从Microsoft Edge打开到Firefox。
我们可以自动为其注册具有文件扩展名的特定应用程序。为此,请在"默认应用"部分中选择"由应用设置默认",在列表中找到程序,然后单击"管理"按钮。
下一个屏幕包含应用程序支持的文件类型的列表。选择要使用Firefox打开的文件扩展名。
在较旧的Windows 10版本和Windows Server 2015中,我们可以通过经典的控制面板分配默认应用程序关联。转到"控制面板->默认程序->设置默认程序"。在程序列表中找到Firefox,然后单击"将此程序设置为默认值"。因此,Firefox将被指定为默认程序以打开所有受支持的文件类型。
如果我们需要选择特定的文件扩展名,请单击"为此程序选择默认设置",然后检查所需的文件扩展名。
我们可以在控制面板的"程序->默认程序->设置关联"部分中检查扩展名为.html的文件的当前关联。
将Windows 10上的文件关联导出到XML文件
我们可以使用DISM将文件关联的当前配置导出到XML文件:
Dism.exe /online /Export-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
该命令会将我们在用户配置文件上配置的所有程序关联保存到XML文件。我们可以在任何文本编辑器中打开DefaultAssoc.xml
文件,并查看导出的文件关联的完整列表。如果我们只需要使用此列表中的一部分关联(为了不覆盖现有的用户设置),则可以手动编辑XML文件。仅保留带有所需文件扩展名的行。例如,对于HTM和HTML扩展,请保留以下几行:
<?xml version="1.0″ encoding="UTF-8″?> <DefaultAssociations> <Association Identifier=".htm" ProgId="FirefoxHTML" ApplicationName="Firefox" /> <Association Identifier=".html" ProgId="FirefoxHTML" ApplicationName="Firefox" /> </DefaultAssociations>
在Windows 10上导入默认应用程序关联
可以使用DISM工具将生成的XML文件导入到其他计算机上的Windows 10中:
Dism.exe /Online /Import-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
重要。这些将文件扩展名映射到应用程序的设置将仅在首次登录期间应用于新的用户配置文件。
如果我们手动编辑XML文件并通过DISM导入它,则在某些Windows 10版本中,我们可能会在首次登录时遇到多个错误,应用默认重置通知。 Microsoft不建议手动编辑此XML文件。
我们也可以将这些设置导入WIM文件中的脱机Windows镜像。首先,我们必须挂载镜像:
Dism /Mount-Image /ImageFile:C:\mnt\images\install.wim /MountDir:C:\mnt\offline
然后导入XML文件:
Dism.exe /Image:C:\mnt\offline /Import-DefaultAppAssociations:\Server1\Share\DefaultAssoc.xml
提示。可以使用以下命令获取脱机Windows镜像中文件关联的当前设置:
Dism.exe /Image:C:\mnt\offline /Get-DefaultAppAssociations
使用组策略设置默认文件关联
Windows 10/8.1引入了新的组策略(GPO)选项,该选项允许我们将具有文件关联设置的xml文件应用于计算机上的所有当前用户。
这个名为"设置默认关联配置文件"的策略位于"计算机配置->管理模板-> Windows组件->文件资源管理器"下。
启用策略并指定XML文件的UNC路径。它可以位于共享网络文件夹中,域控制器上的SYSVOL目录中,也可以使用GPP或者SCCM预复制到计算机上。
下次登录后,新的文件关联设置将应用于计算机的所有用户。
具有新文件关联设置的XML文件的路径包含在注册表项" HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System"下的" DefaultAssociationsConfiguration"注册表参数中。
由于Windows 10会跟踪文件关联设置中的更改,因此当我们首次尝试打开HTML文件时,可能会出现一个窗口,确认使用Firefox作为打开此文件类型的默认程序(请求仅出现一次)。这样的请求将始终在安装新应用程序后出现,该应用程序已注册为打开现有文件类型或者协议。我们可以通过在同一GPO部分中启用策略"不显示新的应用程序安装的通知"来隐藏这些通知。
在Windows中工作时,用户可以重新分配这些文件关联。但是,在下一次登录期间,GPO将使用XML文件中的设置覆盖用户文件关联设置。
通过注册表在Windows 10上更改文件关联
如上所述,在Windows 10中,设置文件关联选项的方式已更改。在上一节中,我们向我们展示了如何通过Firefox浏览器通过XML文件和组策略为.html文件类型配置关联。现在,让我们看看它在Windows 10注册表中的外观。
运行注册表编辑器(regedit.exe),然后转到注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice
。该注册表项包含html文件扩展名的关联设置。请注意以下注册表参数:
- " ProgId",这是用于打开此文件类型的已注册应用程序的标识符。这个应用程式是在XML档案中指定的。如果指定了长标识符而不是应用程序名称,则将配置与现代UWP(Metro风格)应用程序的文件关联。
- "哈希"是自动生成的哈希值,用于验证文件类型与程序是否匹配。此哈希的存在可确保用户或者管理员(通过GPO)已配置此文件映射。需要这种安全机制来保护用户免受恶意程序的攻击,这些恶意程序可以在未经用户批准的情况下替换文件关联。
如果我们尝试手动更改ProgId注册表值并关联另一个程序,则哈希值将不再有效。在这种情况下,Windows 10将自动将文件关联设置重置为默认状态。在这种情况下,用户将看到一条通知:
An app default was reset. An app caused a problem with the default app setting for .html files, so it was reset to Microsoft Edge.
因此,在Windows 10/Windows Server 2015中,我们将无法通过注册表配置文件映射,就像在Windows 7/Windows Server 2008R2中一样。
我们可以在网上找到非官方的SetUserFTA.exe工具,该工具可用于计算哈希值,并将特定的文件扩展名通过注册表映射到程序21.
如何在Windows 10中重置文件关联?
使用以下命令,可以重置先前导入的文件关联的设置:
Dism.exe /Online /Remove-DefaultAppAssociations
运行此命令后,将使用默认文件关联记录所有新用户(重置对现有用户配置文件无效)。
为了将用户手动配置的文件关联重置为默认关联,我们需要在"设置"->"应用"->"默认应用"中单击"重置"按钮。
在这种情况下,所有文件关联都将返回到干净Windows 10安装状态。