private static void Get1To45VersionFromRegistry() { using var ndpKey = Registry.LocalMachine.OpenSubKey(DotnetFrameworkRegistryKey); var versionKeyNames = ndpKey .GetSubKeyNames() .Where(versionKeyName => versionKeyName.StartsWith("v")) .Where(versionKeyName => versionKeyName != DotnetFramework45Key) .ToList(); foreach (var versionKeyName in versionKeyNames) { using var versionKey = ndpKey.OpenSubKey(versionKeyName); var registryInfo = DotnetRegistry.FromRegistryKey(versionKey); Write(registryInfo); if (!string.IsNullOrEmpty(registryInfo.Name)) { continue; } foreach (var subVersionKeyName in versionKey.GetSubKeyNames()) { using var subVersionKey = versionKey.OpenSubKey(subVersionKeyName); var subRegistryInfo = DotnetRegistry.FromRegistryKeyAsChild(subVersionKey); Write(subRegistryInfo); } } }
private static void Write(DotnetRegistry registryInfo) { if (string.IsNullOrEmpty(registryInfo.InstallFlag)) { Write(registryInfo.Name); return; } if (!string.IsNullOrEmpty(registryInfo.ServicePack) && registryInfo.InstallFlag == "1") { Write(registryInfo.Name, registryInfo.ServicePack); return; } if (registryInfo.IsChild && registryInfo.InstallFlag == "1") { Write(registryInfo.Name); } }