Programmatically access the "Open with" Windows Explorer menu list from .NET

.net, c#, windows-explorer, windows-shell

Solution

The list of programs associated with a file extension are stored in the Windows Registry.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

The Microsoft.Win32 API contains the classes to access the registry.

Problem

When right-clicking a file in Windows Explorer, the "Open with" menu item displays a list of available applications, based on the file type of the clicked file. See this picture as an example: (source: magerquark.de) Now I want to be able to programmatically read the list of applications for a given file extension/type (e.g. "png") from within a C# .NET 2.0 application. E.g. ``` public class FileOpenInfo { public string ApplicationName { get; } public string ApplicationPath { get; } public static FileOpenInfo[] GetInformation( string extension ); } ``` Question: Is it possible to get this list?

Original source