I want to show Set program associations windows [edit: for my program] like Chrome do when it run first time after install, like this:

It have:
- Name of my program
- File types I want to set default program (more than one)
How to do it by c# (or win32 c++)?
Edit
I read some articles about modify registry (by .reg file or by code work around modify registry) to set default program. It seem only work in Windows XP/7 or lower, not 8/8.1 as Microsoft use hash to protect these registry.
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:
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:
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:
3) register this application to Windows (again, HKCU could be replaced by HKLM), like this:
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: