C# detect latest .net framework installed on PC
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的更多相关文章
- 判断 .NET Framework安装版本
How To Determine the .NET Framework Installed Versions This topic is a how to.Please keep it as clea ...
- CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法
今天想使用CodeSimth生成一个sqlite数据库的模板.当添加添加数据库的时候发现: .Net Framework Data Provider 可能没有安装. 下面找到官方的文档说明: SQLi ...
- CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法[转载 ]
原文:http://www.cnblogs.com/chenrui7/p/3592082.html 今天想使用CodeSimth生成一个sqlite数据库的模板.当添加添加数据库的时候发现: .Net ...
- .NET Framework 类库
.NET Framework 类库 MSDN == V2.0 == .NET Framework 类库是一个由 Microsoft .NET Framework SDK 中包含的类.接口和值类型组成的 ...
- Hyper-V和Virtual PC的不同
微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件 Hyper-V跟微软自家的Virtual PC.Virtual ...
- Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core
本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 38 Entity Framework ...
- 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 ...
- QUICK START GUIDE
QUICK START GUIDE This page is a guide aimed at helping anyone set up a cheap radio scanner based on ...
- Configuring and troubleshooting a Schema Provider
原文:https://codesmith.atlassian.net/wiki/display/Generator/Configuring+and+troubleshooting+a+Schema+P ...
随机推荐
- 《MySQL数据库》常用语法(二)
表关联关系: -- 内联接 SELECT * FROM m INNER JOIN n ON m.id = n.id; -- 左外联接 SELECT * FROM m LEFT JOIN n ON m. ...
- ngxtop(nginx实时监控工具)
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/dea1ca3a-7 ...
- df,dh 命令
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/df2f05c4-b ...
- 一种分片更新ubi卷的方式(基于ubiupdatevol,拓展fifo支持)
ubi卷的更新方式 对于ubi卷,不能像普通块设备一样进行随机读写.每次更新需要从头写入. 具体的,需要在打开对应的设备之后,先执行一个ioctl UBI_IOCVOLUP,同时传入要更新的数据大小. ...
- Android Studio 安装教程
前言 前段时间周围有很多认识的人学习Android,看蛮多人在装Android Studio,然而看他们装的过程不是那么顺利?然后也有高中同学来问我,于是乎就自己也试着去装了下,也方便日后学习Andr ...
- SpringCloud-使用路由网关的服务过滤功能-拦截登录前是否有token为例
场景 SpringCloud-使用路由网关统一访问接口(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102733 ...
- 针对上一篇prim最后的完善结果
edge* Graph::prim(int cur) { if (cur >= this->vertexNum) { return NULL; } int *weight = new in ...
- 牛客集训 湖南省赛E题 Grid 动态开点线段树
国庆牛客集训的题,正好准备好好训练线段树,想起来就补一下. 题意很简单,两种操作行合并或者列合并,每个操作后计算有多少个子块. 这题应该先推导公式,行操作或者列操作只有一种的时候,很简单,总数就是n* ...
- Python活力练习Day1
Day1:输入年月日,判断这一天是这一年的第几天 eg: input : 2019-02-01 output : 32 data = list(input('please input ...
- Dubbo学习系列之十(Sentinel之限流与降级)
各位看官,先提个问题,如果让你设计一套秒杀系统,核心要点是啥???我认为有三点:缓存.限流和分离.想当年12306大面积崩溃,还有如今的微博整体宕机情况,感觉就是限流降级没做好,"用有限的资 ...