Я согласен с Джоэлом, это будет много записей, и попытка найти что-то в списке сотен элементов списка будет очень плохим для пользователя. Кроме этого, единственный способ получить эту информацию - это пройти через реестр, как говорит Митч, но это не будет простой код.
Чего вы пытаетесь достичь?
Редактировать: @ Митч Уит, я знаю, что это было адресовано @Mark Brackett, но я не смог устоять перед вызовом. Используя LINQ, ваш код может быть записан как:
public static IList GetFileAssociations()
{
return Registry.ClassesRoot.GetSubKeyNames().Where(key => key.StartsWith(".")).Select(key =>
{
string description = Registry.ClassesRoot.OpenSubKey(key).GetValue("") as string;
if (!String.IsNullOrEmpty(description))
{
return new { key, description };
}
else
{
return null;
}
}).Where(a => a != null).ToList();
}