public static IEnumerable <T> RetrieveAllVisualStudioRegistryValues <T>(VisualStudioRegistryLocation primaryKey, string subkeyName, string valueName) { string subKeyName1; string subKeyName2; switch (primaryKey) { case VisualStudioRegistryLocation.LocalMachine: case VisualStudioRegistryLocation.User: subKeyName1 = "Software\\Microsoft\\VisualStudio\\11.0\\" + subkeyName ?? string.Empty; subKeyName2 = "Software\\Microsoft\\VSWinExpress\\11.0\\" + subkeyName ?? string.Empty; break; case VisualStudioRegistryLocation.UserConfig: subKeyName1 = "Software\\Microsoft\\VisualStudio\\11.0_Config\\" + subkeyName ?? string.Empty; subKeyName2 = "Software\\Microsoft\\VSWinExpress\\11.0_Config\\" + subkeyName ?? string.Empty; break; default: return(Enumerable.Empty <T>()); } switch (primaryKey) { case VisualStudioRegistryLocation.LocalMachine: return(RegistryHelper.EnumerateValues <T>(new RegistryHelper.Lookup(RegistryHelper.Hives.LocalMachine, subKeyName1, valueName), new RegistryHelper.Lookup(RegistryHelper.Hives.LocalMachine, subKeyName2, valueName))); case VisualStudioRegistryLocation.User: case VisualStudioRegistryLocation.UserConfig: return(RegistryHelper.EnumerateValues <T>(new RegistryHelper.Lookup(RegistryHelper.Hives.CurrentUser, subKeyName1, valueName), new RegistryHelper.Lookup(RegistryHelper.Hives.CurrentUser, subKeyName2, valueName), new RegistryHelper.Lookup(RegistryHelper.Hives.DefaultUser, subKeyName1, valueName), new RegistryHelper.Lookup(RegistryHelper.Hives.DefaultUser, subKeyName2, valueName))); default: return(Enumerable.Empty <T>()); } }
public static T RetrieveVisualStudioRegistryValue <T>(VisualStudioRegistryLocation primaryKey, string subkeyName, string valueName) { return(Enumerable.FirstOrDefault <T>(RegistryHelper.RetrieveAllVisualStudioRegistryValues <T>(primaryKey, subkeyName, valueName))); }