static void GetNetVersionDemo()
{
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
foreach(var versionKeyName in ndpKey.GetSubKeyNames())
{
//Skip .NET Framework 4.5 version information.
if(versionKeyName=="v4")
{
continue;
} if(versionKeyName.StartsWith("v"))
{
RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); //Get the .NET Framework version value.
var name = (string)versionKey.GetValue("Version", ""); //Get the service pack number.
var sp = versionKey.GetValue("SP", "").ToString(); //Get the installation flag,or an empty string if there is none.
var install = versionKey.GetValue("Install", "").ToString(); if(string.IsNullOrEmpty(install))
{
Console.WriteLine($"{versionKeyName} {name}");
}
else
{
if(!string.IsNullOrEmpty(sp) && install=="")
{
Console.WriteLine($"{versionKeyName} {name} SP{sp}");
}
} if(!string.IsNullOrEmpty(name))
{
continue;
} foreach(var subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("Version", "");
if(!string.IsNullOrEmpty(name))
{
sp = subKey.GetValue("SP", "").ToString();
} install = subKey.GetValue("Install", "").ToString();
if(string.IsNullOrEmpty(install))
{
Console.WriteLine($"{versionKeyName} {name}");
}
else
{
if((!string.IsNullOrEmpty(sp)) && install=="")
{
Console.WriteLine($"{subKeyName} {name} SP{sp}");
}
else
if(install=="")
{
Console.WriteLine($"{subKeyName} {name}");
}
}
}
}
}
}
}

using Microsoft.Win32;

static void Main(string[] args)
{
GetDotNetFrameworkVersion();
Console.ReadLine();
} static void GetDotNetFrameworkVersion()
{
const string subKey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full";
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subKey))
{
if(ndpKey!=null && ndpKey.GetValue("Release")!=null)
{
var objResult = ndpKey.GetValue("Release");
var versionResult = CheckFor45PlusVersion((int)objResult);
Console.WriteLine($".NET Framework Version:{versionResult}");
}
else
{
Console.WriteLine(".NET Framework Version 4.5 or later is not detected!");
}
}
} //Convert the Main.Minor.Build.Revision
static string CheckFor45PlusVersion(int releaseKey)
{
if(releaseKey>=)
{
return "4.8 or later";
} if(releaseKey>=)
{
return "4.7.2";
} if(releaseKey>=)
{
return "4.7.1";
} if (releaseKey >= )
{
return "4.7";
} if(releaseKey>=)
{
return "4.6.2";
} if(releaseKey>=)
{
return "4.6.1";
} if(releaseKey>=)
{
return "4.6";
} if(releaseKey>=)
{
return "4.5.2";
} if(releaseKey>=)
{
return "4.5.1";
} if(releaseKey>=)
{
return "4.5";
} return "No 4.5 or later version detected!";
}

C# detect latest .net framework installed on PC的更多相关文章

  1. 判断 .NET Framework安装版本

    How To Determine the .NET Framework Installed Versions This topic is a how to.Please keep it as clea ...

  2. CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法

    今天想使用CodeSimth生成一个sqlite数据库的模板.当添加添加数据库的时候发现: .Net Framework Data Provider 可能没有安装. 下面找到官方的文档说明: SQLi ...

  3. CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法[转载 ]

    原文:http://www.cnblogs.com/chenrui7/p/3592082.html 今天想使用CodeSimth生成一个sqlite数据库的模板.当添加添加数据库的时候发现: .Net ...

  4. .NET Framework 类库

    .NET Framework 类库 MSDN == V2.0 == .NET Framework 类库是一个由 Microsoft .NET Framework SDK 中包含的类.接口和值类型组成的 ...

  5. Hyper-V和Virtual PC的不同

    微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件 Hyper-V跟微软自家的Virtual PC.Virtual ...

  6. Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 38 Entity Framework ...

  7. Professional C# 6 and .NET Core 1.0 - Chapter 38 Entity Framework Core

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - Chapter 38 Entity F ...

  8. QUICK START GUIDE

    QUICK START GUIDE This page is a guide aimed at helping anyone set up a cheap radio scanner based on ...

  9. Configuring and troubleshooting a Schema Provider

    原文:https://codesmith.atlassian.net/wiki/display/Generator/Configuring+and+troubleshooting+a+Schema+P ...

随机推荐

  1. 牛客NOIP暑期七天营-提高组2

    第一题:ACGT 题目链接:https://ac.nowcoder.com/acm/contest/931/A trie树.hash.map遍历  ①.trie树上的节点多记一个rest值表示还有多少 ...

  2. 1、手写Unity容器--极致简陋版Unity容器

    模拟Unity容器实例化AndroidPhone 思路: 1.注册类型:把类型完整名称作为key添加到数据字典中,类型添加到数据字典的value中 2.获取实例:根据完整类型名称也就是key取出val ...

  3. 综合5项百度大脑AI技术,快速构建智能交通方案

    一.整体方案:思路:整合百度AI功能,通过百度AI解决.优化在公交运行过程中遇到的运营.管理.安全等方面的问题.具体如下: 安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警.  ...

  4. Git常用进阶操作之一

    提起Git,经常做项目的我们都不陌生,我们常用的功能有哪些呢? 这里按个人使用情况简单总结一下. 像新建远程仓库.新建分支这些就不说了,不熟的同学可以翻看我前面写的git基本操作. 1.首先提一下为每 ...

  5. 【zabbix告警监控】配置zabbix监控nginx服务

    zabbix监控nginx,nginx需要添加--with-http_stub_status模块 使用zabbix监控nginx,首先nginx需要配置开启ngx_status.但是我这边nginx安 ...

  6. java8-Optional的引入

    背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛. 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计. 一个例子 业务模型 Perso ...

  7. Css里的box-shadow的值分别代表什么

    以下为例: box-shadow:1px 2px 3px 4px color inset; 1px:表示沿x轴的正方向的长度(如果是负数,则为沿x轴的负方向的长度); 2px:表示沿y轴的正方向的长度 ...

  8. 初识微信小程序

    一.简介 微信小程序是运行在微信环境中的应用,它只能在微信中运行,不能运行在浏览器等其他环境中,微信团队提供了专门的开发工具用于微信小程序的开发,还提供了丰富的API,让我们的小程序能够具备与手机设备 ...

  9. webpack4配置学习(一)

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency gr ...

  10. 在 .NET Core 3.0 中支持 Newtonsoft.Json 的使用

    .NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: Syst ...