コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
            }
        }