【C#】获取已安装的NETFramework版本集合
代码
/// <summary>/// Windows信息/// </summary>public partial class WindowsInfo{/// <summary>/// 获取已安装的NETFramework版本集合/// </summary>/// <returns></returns>public static List<string> GetInstalledNETFrameworkVersions(){List<string> installedNETFrameworkVersions = new List<string>();RegistryKey ndpKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, Dns.GetHostName()).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\");foreach (string versionKeyName in ndpKey.GetSubKeyNames()){if (versionKeyName.StartsWith("v", false, System.Globalization.CultureInfo.CurrentCulture)){RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);string name = (string)versionKey.GetValue("Version", "");string sp = versionKey.GetValue("SP", "").ToString();string install = versionKey.GetValue("Install", "").ToString();if (install == "") //no install info, must be later.{installedNETFrameworkVersions.Add(versionKeyName + " " + name);}else{if (sp != "" && install == "1"){installedNETFrameworkVersions.Add(versionKeyName + " " + name + " SP" + sp);}}if (name != ""){continue;}foreach (string subKeyName in versionKey.GetSubKeyNames()){RegistryKey subKey = versionKey.OpenSubKey(subKeyName);name = (string)subKey.GetValue("Version", "");if (name != "")sp = subKey.GetValue("SP", "").ToString();install = subKey.GetValue("Install", "").ToString();if (install == "") //no install info, must be later.{installedNETFrameworkVersions.Add(versionKeyName + " " + name);}else{if (sp != "" && install == "1"){installedNETFrameworkVersions.Add(subKeyName + " " + name + " SP" + sp);}else if (install == "1"){installedNETFrameworkVersions.Add(subKeyName + " " + name);}}}}}return installedNETFrameworkVersions;}}
可以获取下面的信息
Installed .NET Framework:
v1.1.4322 SP0
1033 SP0
v2.0.50727 2.0.50727.4927 SP2
v3.0 3.0.30729.4926 SP2
v3.5 3.5.30729.4926 SP1
v4
Client 4.8.03752
Full 4.8.03752
v4.0
Client 4.0.0.0
相关文章:
【C#】获取已安装的NETFramework版本集合
代码 /// <summary>/// Windows信息/// </summary>public partial class WindowsInfo{/// <summary>/// 获取已安装的NETFramework版本集合/// </summary>/// <returns></returns>public static List<string> GetInstalledNETFramew…...
对字符串中所有单词进行倒排-C语言/Java
描述 输入一个字符串,输出字符串中单词的倒序。 要求 构成单词的字符只有26个大写或小写英文字母。非构成单词的字符均视为单词间隔符;倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只…...
Kubernetes入门 四、Pod核心
目录 什么是PodPod与容器不同Pod如何管理多个容器Pod的管理-工作负载K8s中的资源清单创建使用Pod直接创建Pod使用 Deployment 创建Pod 环境变量重启策略镜像拉取策略访问 DNS 的策略资源限制初始化容器临时容器(了解) 什么是Pod Pod 是可以在 Kubernete…...
【JAVA】数组练习
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 数组练习 1. 数组转字符串2. 数组拷贝3.…...
每日一题——不同路径的数目(一)
题目 一个机器人在mn大小的地图的左上角(起点)。 机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。 可以有多少种不同的路径从起点走到终点? 数据范围:0<n,m≤100,保证计算结…...
innodb的锁
一致性锁定读和一致性非锁定读 Read Committed和Repetable Read级别下采用MVCC 实现非锁定读 但在一些情况下,要使用加锁来保障数据的逻辑一致性 自增列 锁的算法 唯一值 MySQL 中关于gap lock / next-key lock 的一个问题_呜呜呜啦啦啦的博客-CSDN博客 RR可以通过…...
Jmeter-压力测试工具
文章目录 Jmeter快速入门1.1.下载1.2.解压1.3.运行 2.快速入门2.1.设置中文语言2.2.基本用法 Jmeter快速入门 1s内发送大量请求,模拟高QPS,用以测试网站能承受的压力有多大 Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK࿰…...
【KVM虚拟化环境部署】
环境部署 KVM虚拟化环境 1、装系统时手动选择安装 2、CentOS 7 最小化安装 yum install qemu-kvm qemu-img libvirt -y yum install virt-install libvirt-python virt-manager python-virtinst libvirt-client -y安装好CentOS 7后,去设置里面点击处理器&#x…...
030 - 定点类型(精确值)
-DECIMAL,NUMERIC: 该DECIMAL和NUMERIC 类型的存储精确的数值数据。当保留精确度很重要时,例如使用货币数据,则可以使用这些类型。在MySQL中,NUMERIC实现为DECIMAL,因此以下有关的说明DECIMAL同样适用于 NU…...
生活随笔,记录我的日常点点滴滴.
前言 😘个人主页:曲终酣兴晚^R的小书屋🥱 😕作者介绍:一个莽莽撞撞的🐻 💖专栏介绍:日常生活&往事回忆 😶🌫️每日金句:被人暖一下就高热&…...
C语言:每日一练(选择+编程)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:打印1到最大的n位数 示例1 思路一: 题二:计算日期到天数转换 示例1 思路一…...
Prompt、RAG、微调还是重新训练?选择正确的生成式 AI 的方法指南
文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 这篇博客试图根据一些常见的可量化指标,为您选择适合您用例的生成式人工智能方法提供指导。 生成式 AI 正在以惊人的速度发展,…...
Java实现单例模式的几种方法
单例模式作为23中设计模式中最基础的设计模式,一般实现方式为 ①私有化构造方法 ②提供一个获取对象的静态方法 除此之外,实现单例模式的方法还有很多种,这篇文章主要介绍实现单例模式的几种方法。 目录 一、懒汉式单例 二、懒汉式单例优化…...
VIOOVI:标准的作业规范要求是什么?标准化作业规范怎么写?
本文围绕“标准化作业”展开论述,分享一些关于标准化作业以及标准的作业规范等相关知识。 什么是标准化作业? 标准化作业是一种以人的行为为中心,在一个操作序列中有效地进行生产而没有浪费的操作方法。 标准化作业的前提即:关注…...
WPF中的GridSplitter使用原则
WPF中的GridSplitter使用原则 GridSplitter对象必须放在Grid单元格中。可以预留一行或者列的Height或Width属性设置为auto。GridSplitter对象总是改变整行或整列的尺寸,为使该对象外观和行为保持一致,需要拉伸GridSplitter对象使其穿越整行或整列&#…...
【【STM32----I2C通信协议】】
STM32----I2C通信协议 我们会发现I2C有两根通信线: SCL和SDA 同步 半双工 带数据应答 支持总线挂载多设备(一主多从,多主多从) 硬件电路 所有I2C设备的SCL连在一起,SDA连在一起 设备的SCL和SDA均要配置成开漏输出模式 …...
【JUC】线程池ThreadPoolTaskExecutor与面试题解读
1、ThreadPoolTaskExecutor 创建线程池 从它的创建和使用说起,创建和使用的代码如下: 创建: ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(corePoolSize);executor.setMaxPoolSize(maxPoolSize…...
也许你正处于《孤注一掷》中的“团队”,要留心了
看完这部电影,心情久久不能平静,想了很多,倒不是担心自己哪天也成为“消失的yaozi”,而是在想,我们每天所赖以生存的工作,跟电影里他们的工作比,差别在哪里呢? 目录 1. 产品的本质…...
Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?
上文我们已经学到, 一个Topic(主题)会有多个Partition(分区)为了保证高可用,每个分区有多个Replication(副本)副本分为Leader 和 Follower 两个角色,Leader副本对外提供读…...
go入门实践五-实现一个https服务
文章目录 前言生成证书申请免费的证书使用Go语言生成自签CA证书 https的客户端和服务端服务端代码客户端代码 tls的客户端和服务端服务端客户端 前言 在公网中,我想加密传输的数据。(1)很自然,我想到了把数据放到http的请求中,然后通过tls确…...
微软DebugMCP:可视化调试MCP协议,解决AI与工具通信黑盒问题
1. 项目概述:当你的AI助手开始“自言自语”,你需要一个调试器 最近在折腾AI应用开发的朋友,估计没少跟各种“智能体”打交道。无论是基于OpenAI的GPTs,还是那些能联网、能调用工具的自定义助手,它们背后的核心通信协议…...
终极免费离线OCR解决方案:Umi-OCR完整使用指南
终极免费离线OCR解决方案:Umi-OCR完整使用指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。 …...
HS2-HF_Patch终极指南:一键为Honey Select 2安装完整增强补丁
HS2-HF_Patch终极指南:一键为Honey Select 2安装完整增强补丁 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是专为《Honey Select 2》…...
Godot卡牌游戏框架终极指南:3小时从零构建专业级卡牌游戏
Godot卡牌游戏框架终极指南:3小时从零构建专业级卡牌游戏 【免费下载链接】godot-card-game-framework A framework which comes with prepared scenes and classes to kickstart your card game, as well as a powerful scripting engine to use to provide full r…...
从零构建可定制对话系统:模块化架构与RAG实战指南
1. 项目概述:从零构建一个可定制的对话系统最近在折腾一个挺有意思的东西,我把它叫做“定制化聊天系统”。起因很简单,市面上现成的聊天机器人,无论是开源的还是商业的,总感觉差了那么点意思。要么是功能太臃肿&#x…...
【C语言】printf格式化输出:你真的理解“四舍五入”的陷阱吗?
1. 从printf的"四舍五入"陷阱说起 那天我在调试一个财务计算程序时,发现金额显示总差那么几分钱。比如3.145元应该显示为3.15,但程序输出却是3.14。这让我想起刚学C语言时踩过的坑——printf的格式化输出并不像数学课教的四舍五入那样简单。 先…...
Obsidian智能模板终极指南:3步打造高效笔记自动化系统
Obsidian智能模板终极指南:3步打造高效笔记自动化系统 【免费下载链接】Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater Templater插件是Obsidian生态系统中功能最强大的智能模板解决方案,它能…...
Arm Iris调试接口:架构设计与工程实践详解
1. Iris调试与追踪接口深度解析调试与追踪技术是嵌入式系统开发的核心支柱,而Arm的Iris接口代表了这一领域的最新进展。作为一名长期从事嵌入式调试工具开发的工程师,我将带您深入剖析这套接口的设计哲学与实战应用。1.1 接口架构设计理念Iris的架构设计…...
告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程
告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程 每次打开Clion都要在终端输入./clion.sh?作为从Windows转战Linux的开发者,这种操作简直让人抓狂。本文将彻底解决这个痛点,手把手教你用.desktop文件创建专业…...
[具身智能-767]:AMCL全局撒粒子重搜与局部小范围匹配,是否算法过程是相似的,不同的是:粒子的数量、覆盖的区域、最终的精度?
AMCL 全局重搜 VS 局部匹配 详细对比核心定论二者底层算法流程、运算逻辑、执行步骤 100% 完全一致,统一遵循:运动预测→观测权重计算→粒子重采样→位姿融合输出这套粒子滤波逻辑,仅在粒子分布范围、粒子总数、收敛活动区间、定位误差精度四…...
