All steps described in this blog post have been tested on following Windows 10 versions:
- Windows 10 1709
- Windows 10 1703
- Windows 10 1607
Configuring file association prior Windows 10
There were different ways and guidance to set default program prior to Windows 10 (see Managing Default Applications).
Before Windows 10, an application could check default apps, ask for user consent and set default app programmatically using Windows API.
But some programs skip the user consent and set the app defaults into the registry. The main requirement for default file association is often forgotten: the end-user is in control.
Now in Windows 10 checks if registry file extension keys have not been modified to prevent file association hijacking.
File association changes in Windows 10
The way that default file associations work changed in Windows 10.
There is a new UI for the end-user. This new way puts the user in control with a new file association notification.
This notification will be displayed:
- On the first launch of a file extension, if multiples programs are registered for handling that file extension.
- Each time a new application registers a file extension, except if the Always use this app to open .xxx files is checked.
If an application used Windows API to set default apps, the user will receive the following notification:
For more information about these changes : https://blogs.windows.com/windowsexperience/2015/05/20/announcing-windows-10-insider-preview-build-1...
You will find some explanation on The Old New Thing blog: Why do my PDF file associations get reset every time I restart?
Windows 10: An app default was reset
But what happens if an application is not using Windows API and writes some stuff and hijacks user preferences?
Now,Windows 10 detects that the registry is corrupted and will reset the default program for this file extension. Additionally, the end-user will receive this notification: An App default was reset. These change is documented in KB4001770: Reset app default when a registry setting is deleted or corrupted and streamlined notification about the corruption.
How to configure file association in Windows 10?
It's possible for IT Pro to configure or force default association using supported methods.
The best way to do it is to set up a reference computer, install applications, configure default programs and use Dism to export/import the custom default app associations or use a group policy.
Set up a reference computer
Go to Control Panel\All Control Panel Items\Default Programs and configure default apps associations. In Windows 10 1709, this control panel item is now in Settings app.
Let's try to configure Internet Explorer as the default browser
Choose Internet Explorer
Internet Explorer is now the default web browser
Export/import the custom default app association with dism.exe
Note that you need administrator rights to use dism.exe. And to export properly the associations use the same account used in step 3, otherwise you will get a malformed XML file.
- Dism.exe /online /export-defaultappassociations:C:\temp\CustomFileAssoc.xml
PS C:\Windows\system32> dism /online /export-defaultappassociations:"C:\Temp\IE-DefaultBrowser.xml"
- Open the xml file and check if everything looks good.
Usually at this step you will be tempted to delete other lines because you simply don't care about them and get a file like this:
VERY IMPORTANT: If you want to import your file with DISM.exe, DO NOT delete any file associations entries!
A missing entry will trigger the App default reset notification and you will get a notification storm at the first logon.
Refresh your XML on a regular basis
As some recommended applications can manage more extensions with each new Windows 10 version available, it's a good practice to refresh your XML. For example, in Windows 10 1703, Microsoft Edge registers the epub extension. If you're using an XML file from Windows 10 1607, epub is missing. As a result, you will get an app reset notification for epub.
Tips for building your XML file
- Manually editing the file could result in a non-valid XML file. Ensure that your XML file is valid. Opening XML file in the old Internet Explorer is a good idea to check if the XML is valid. You can try XML Notepad to edit/validate XML files.
- If you do not see your file extension in XML file, go back to Control Panel\All Control Panel Items\Default Programs and configure default apps associations, select file extension, click on Change Program and confirm the program in the dialog box. Then, export again you're XML file.
Deploy your custom XML
Now it's time to apply your XML file. You have two options:
- Set up file association in your Windows 10 image. File associations will be configured for new users' profiles. Existing profiles are untouched. Users can change file associations.
- Configure a policy for your domain-joined computer: file association will be configured at each logon. User will be able to change file association, but at the next logon file association will be configured using XML file. This policy works only for domain-joined computer.
Configure the XML file for your Windows 10 reference image:
Dism.exe /online /import-defaultappassociations:c:\temp\CustomFileAssoc.xml
Your file will be copied in \Windows\System32 with the following name OEMDefaultAssociations.xml
Configure the XML file for your domain-joined computer
Configure the following policy Set a default associations configuration file located in Computer\Policies\Administrative Templates\Windows Components\File Explorer.
If this group policy is enabled and the client machine is domain-joined, the file will be processed, and default associations will be applied at logon time.
Note: this policy will not prevent user to change the file association. But at each logon the default association configured in XML file will be applied.
How to force only a set of file associations?
Some IT Pros want to force only some file associations and let users in control for others file associations. For example, they want to configure Internet Explorer as default for HTTP/HTTPS only for HR people.
So, they removed everything in the XML file except Internet Explorer entries. As previously seen, removing entries in XML file could result in app reset notifications.
But don't panic, there is a solution to do it in your Windows 10 reference image.
You just need to have two XML files, one for configuring the defaults and another one to force file association.
The main XML, CustomDefaultAssoc.xml must contain all extensions. You need to import this file using:
Dism /online /import-defaultappassociations:C:\CustomDefaultAssoc.xml
The second XML, FTA-IE-Only.xml will contain only a set of file extensions. You need to use this XML file with the group policy Set a default associations configuration file.
At the first logon, Explorer.exe will apply both XML.
The end user will have this results without any app reset notifications:
- PDF files associated with Microsoft Reader.
- HTM/HTML files associated with Internet Explorer.
OEMDefaultAssociations.xml contains the following lines:
IEOnly.xml contains the following lines:
Why I'm getting an app reset notification?
Raymond Chen talked about this problem. If a program is trying to set some registry keys, Explorer will detect it and the file association will be reset.
Stop using script or other pre-Windows 10 ways for configuring file association.
You can check the Microsoft-Windows-Shell-Core/AppDefaults event log for clues about file associations reset.
If you want to troubleshoot this, keep calm and run Procmon
You should be able to track which application is hijacking your file associations. Once you identified the bad application, the best way to solve this, is to use a more recent version, or contact your vendor.
Why I'm getting the User Choice notification even if I used an XML file?
You could get the following notification starting Windows 10 1703 when you choose an application as the default viewer instead using Microsoft Edge.
These notification windows are displayed only once if you're clicking on OK. It's because Microsoft Edge is detected as a new application.
If a new app is installed and is registered to an existing file extension or protocol you will get this notification.
If you want to get rid of these notifications, there is a group policy to hide these notifications:
Do not show the 'new application installed' notification
This policy removes the end-user notification for new application associations. These associations are based on file types (e.g. *.txt) or protocols (e.g. http:) If this group policy is enabled, no notifications will be shown
Group Policy Settings related to File Associations settings
You can find in the table below some group policies related to default file associations settings:
|Policy Setting Name||Policy Path|
|Do not reinitialize a pre-existing roamed user profile when it is loaded on a machine for the first time||Windows Components\File Explorer|
|Turn off Internet File Association service||System\Internet Communication Management\Internet Communication settings|
|Turn off access to the Store||System\Internet Communication Management\Internet Communication settings|
|Do not show the 'new application installed' notification||Windows Components\File Explorer|
|Set a default associations configuration file||Windows Components\File Explorer|
Bonus for Adobe Reader XI users
If you are still using Adobe Reader XI, you should get a new application to open PDF, as Adobe Reader XI is out of support.
With Adobe XI installer, you can get an app reset notification for PDF extensions and it will be reset to Microsoft Edge.
You should look at Adobe Reader documentation and launch the Adobe Reader 11 installation with the following command line:
AdbeRdr11010_en_US.exe /rs /sAll /msi EULA_ACCEPT=YES OWNERSHIP_STATE=0
With OWNERSHIP_STATE=0 Adobe Reader stops to change file association for PDF with an unsupported way.