See the question and my original answer on StackOverflow

This is all explained in the official documentation here: Guidelines for File Associations and Default Programs

To launch this Windows-provided UI, you can use the IApplicationAssociationRegistrationUI interface.

Here is a sample console app that demonstrate this for a fictional "MyApp" application:

class Program
    static void Main(string[] args)
        IApplicationAssociationRegistrationUI app = (IApplicationAssociationRegistrationUI)new ApplicationAssociationRegistrationUI();
        int hr = app.LaunchAdvancedAssociationUI("MyApp");
        Exception error = Marshal.GetExceptionForHR(hr);
        if (error != null)
            Console.WriteLine("Error: " + error.Message);

public interface IApplicationAssociationRegistrationUI
    int LaunchAdvancedAssociationUI([MarshalAs(UnmanagedType.LPWStr)] string pszAppRegName);

public class ApplicationAssociationRegistrationUI

And this is not finished :-) This only works if the registry is properly setup for this "MyApp" application, which is kinda the difficult part. Here are the simplest steps needed for this to work:

1) create a fictional "MyAppHTML" progid in HKCR, like this:

Windows Registry Editor Version 5.00

@="MyApp HTML Document"

"ApplicationCompany"="Fictional Software Inc."



@="\"C:\\the app path\\testassoc.exe\""

2) declare a fictional "MyApp" application (I suggest HKCU, but it could be HKLM), from a fictional "FictionalSoftware" company, like this, for example with two file associations:

Windows Registry Editor Version 5.00



"ApplicationDescription"="My Fictional Application"


3) register this application to Windows (again, HKCU could be replaced by HKLM), like this:

Windows Registry Editor Version 5.00


If you get errors when running the sample app, then you probably messed up the registry layout. If you got it ok, then you should see something like this:

enter image description here