VS 2010 .NET 3.5
Что неправильно?
                private T GetKeyValue<T>(string key, T defaultValue)
                {
                        object value = defaultValue;
                        var subKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\MySoft\Test1\");
                        if (subKey != null)
                        {
                                value = subKey.GetValue(key);
                                subKey.Close();
                        }
                        var converter = TypeDescriptor.GetConverter(typeof(T));
                        return (T)converter.ConvertFrom(value);
                }
Если ключ в реестре существует, то всё работает замечательно, для типов string и bool. А вот если subKey = NULL, то string работает, а вот с bool проблемы:
                        GetKeyValue<bool>("Val1", false);
выбрасывает исключение при конвертировании (используется defaultValue):                
                         converter.ConvertFrom(value);
Тест для Т = bool:
                         var buf = converter.CanConvertFrom(typeof(T));
тоже не проходит.