如何可靠地检测实际安装的.NET 4.5版本?

2024-04-27

我的实际问题是我遇到了两个版本的 .NET 4.5 完整设置:

  • a (possibly) older one, which is also available when downloading SQL Server Data Tools
    • size: 50,349,920
    • md5: a5e81d1b3905ada0a6e35fd6c6a2e1f4
  • a (possibly) newer one downloaded this morning from here: http://www.microsoft.com/visualstudio/eng/downloads http://www.microsoft.com/visualstudio/eng/downloads
    • size: 50,352,408
    • md5: d02dc8b69a702a47c083278938c4d2f1

两种设置的版本都是4.5.50709.17929。在内部,主要区别在于netfx_Full.mzz文件,但是在使用 7-zip 提取内容后,即使文件内容不同(我已经检查了大约 426 个随机文件中的大约 20 个),我最终还是得到了很多具有相同版本的文件,所以我真的不能告诉哪个是新的。

有没有一种方法可以可靠地检测已安装的 .NET 4.5 运行时的实际版本,以便我可以仅在确实需要时运行安装程序?

Update

我检查了所有具有不同内容的 426 个文件,并且所有这些文件在两种设置中都具有相同的 ProductVersion 和 FileVersion。因此,注册表或文件校验和是下一步。

Update 2

注册表中列出的版本对于两种设置都是相同的:4.5.50709

Update 3

.NET 4.5.2 http://www.microsoft.com/en-us/download/details.aspx?id=42642现在可用:

此版本的 .NET Framework 与 .NET Framework 3.5 SP1 及更早版本并行运行,但对 .NET Framework 4、.NET Framework 4.5 和 .NET Framework 4.5.1 执行就地更新。


MS 最近修补了 .NET 4.5,以在某些情况下恢复与 .NET 4.0 的向后兼容性(请参阅http://blogs.msdn.com/b/dotnet/archive/2012/10/17/net-framework-4-5-off-to-a-great-start.aspx http://blogs.msdn.com/b/dotnet/archive/2012/10/17/net-framework-4-5-off-to-a-great-start.aspx).

MS 可能会使用这些更改更新设置(以便升级到 .NET 4.5 的用户不会遇到兼容问题),但我不知道为什么他们不会更改设置上的版本号。

另请注意,.NET 版本号和运行时版本号之间存在差异,如System.Environment.Version。对于 .NET 4.5,后者仍然是 4.0.30319.*,只是修订号发生了变化(随着 .NET 4.5 更新以及每个安全更新)。

以下是在野外观察到的运行时版本的一些示例:

Base 4.0

  • 4.0.30319.1 = .NET 4.0 RTM
  • 4.0.30319.269 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS12-035 https://support.microsoft.com/en-us/kb/2604121GDR 安全更新)
  • 4.0.30319.276 = Windows XP SP3 上的 .NET 4.0(4.0.3 运行时更新)
  • 4.0.30319.296 = Windows XP SP3、7 上的 .NET 4.0(带有MS12-074 https://support.microsoft.com/en-us/kb/2729449GDR 安全更新)
  • 4.0.30319.544 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS12-035 https://support.microsoft.com/en-us/kb/2604121LDR 安全更新)
  • 4.0.30319.1008 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS13-052 https://support.microsoft.com/en-us/kb/2835393GDR 安全更新)
  • 4.0.30319.1022 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS14-009 https://support.microsoft.com/en-us/kb/2898855GDR 安全更新)
  • 4.0.30319.1026 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS14-057 https://support.microsoft.com/en-us/kb/2972106GDR 安全更新)
  • 4.0.30319.2034 = Windows XP SP3、7、7 SP1 上的 .NET 4.0(带有MS14-009 https://support.microsoft.com/en-us/kb/2898855LDR 安全更新)

4.5

  • 4.0.30319.17626 = .NET 4.5 RC
  • 4.0.30319.17929 = .NET 4.5 RTM
  • 4.0.30319.18010 = Windows 8 上的 .NET 4.5
  • 4.0.30319.18052 = Windows 7 SP1 64 位上的 .NET 4.5
  • 4.0.30319.18063 = Windows 7 SP1 64 位上的 .NET 4.5(带有MS14-009 https://support.microsoft.com/en-us/kb/2898864安全更新)

4.5.1

  • 4.0.30319.18408 = Windows 7 SP1 64 位上的 .NET 4.5.1
  • 4.0.30319.18444 = Windows 7 SP1 64 位上的 .NET 4.5.1(带有MS14-009 https://support.microsoft.com/en-us/kb/2898869安全更新)
  • 4.0.30319.34014 = Windows 8.1 64 位上的 .NET 4.5.1

4.5.2

  • 4.0.30319.34209 = Windows 7 SP1 64 位上的 .NET 4.5.2
  • 4.0.30319.34209 = Windows 8.1 64 位上的 .NET 4.5.2

4.6 及更高版本

  • 4.0.30319.42000

我在 Windows 更新历史记录中没有看到任何 .NET 更新,因此我猜测 v18010 的更新是作为知识库 2756872 http://support.microsoft.com/kb/2756872.

更新:显然,由于原始下载中的数字签名错误,微软更新了 .NET 4.5 设置。知识库 2770445 http://support.microsoft.com/kb/2770445.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何可靠地检测实际安装的.NET 4.5版本? 的相关文章

  • 设置 NLS_LANG 以进行 Oracle 管理的数据访问

    我有一个 winforms c 应用程序 通过 oracle manageddataaccess 通过 NHibernate 4 0 使用 Oracle 12c oracle 数据库位于客户站点的另一台计算机上 由于 oracle 数据库和
  • 将 UTF8 字符串解码为拉丁文

    我正在尝试将 UTF8 字符串转换为拉丁字符 这是我如何尝试实现此目标的示例 string sUnicode Peneda Ger s string result Encoding Unicode GetString Encoding Co
  • 索引数据表

    我有一个Datatable其中包含数百万数据 数据表 创建索引之前 x x DateColumn Name x x 2014 01 02 10 01 03 A 2014 01 02 11 07 23 A 2014 01 03 07 12 1
  • 在 Visual Studio 安装项目中安装后如何启动应用程序

    我已经使用 Visual Studio 2008 创建了一个安装项目 应用程序安装完成后 我希望它立即启动 关于如何做到这一点有什么想法吗 我使用脚本在 MSI 的最终形式上放置了 启动 ProductName 复选框 不过 我不能对剧本有
  • 我应该在学习 ASP.NET 和 Sharepoint 之前学习 .NET 和 C# 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是 Unix 和 Linux 的资深用户 在这些技术方面分别拥有大约 30 年和 14 年的经验 但为了扩展我的工具箱 我正在寻找有关学习 S
  • 标签文本每秒刷新一次

    我试图每秒刷新一次标签 以便倒计时更新 但遇到了一些麻烦 我对 C 非常陌生 对于菜鸟问题 表示歉意 private void Form1 Load object sender EventArgs e bool ephCD true int
  • 在 C# 中提取私钥字节

    我目前可以使用以下命令使用 OpenSSL 从 PFX 文件中提取私钥 openssl pkcs12 in filename pfx nocerts out privateKey pem openssl exe rsa in private
  • 关闭 Quartz .Net 中的调试日志记录

    我正在使用 Quartz NET 在我们的应用程序中安排一些自定义任务 一切工作正常 只是它在一秒钟内记录大约二十个调试条目 我不知道如何关闭调试日志记录 任何帮助将非常感激 因为我一直试图在网上查找但没有运气 调试条目如下所示 DEBUG
  • 等待异步TaskEx

    What is TaskEx In http www i programmer info programming c 1514 async await and the ui problem html start 1 http www i p
  • 如何将对象转换为元组?

    我创建元组并将其添加到组合框中 comboBox1 Items Add new Tuple
  • .NET DateTime 到 time_t(以秒为单位)

    有C代码 time1 double dt1 25569 0 86400 0 它以秒为单位从 TDateTime VCL 转换为 time t 格式 所以最后我需要得到time t NET DateTime 的格式 关于 time t 几乎普
  • IoC比较[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 开发 ASP NET Web 应用程
  • 如何对与 VS DOM 交互的 Visual Studio AddIn 进行单元测试

    我开发了一个 Visual Studio 插件 它与 Visual Studio DOM 交互并修改加载的解决方案 虽然我努力分离与 DOM 交互的代码 并可以通过单元测试对其他业务逻辑进行单元测试 但有没有一种方法可以对 VS DOM 交
  • End using 是否关闭打开的 SQL 连接

    如果我将 SQLConnection 包装在 using 中 我应该关闭它还是最终 using 处理它 using cn as new system data sqlclient sqlconnection cn open do a bun
  • SerialPort.Open() --IOException --“参数不正确。”

    我编写了以下代码来在加载 MainForm 时配置串行端口 第一次运行时它给出IOException打开端口时 提示参数不正确 但当我重新启动应用程序时 它工作正常 仅当应用程序在启动计算机后第一次运行时才会出现异常 然后它可以正常工作直到
  • 如何清除客户端.Net SSL会话缓存

    我正在编写一个小测试工具 它使用 HttpWebRequest 来负载测试服务器 我想要 每次我尝试调用 HttpWebRequest GetResponse 时 它都会建立一个新的 SSL 会话 而不是使用缓存中的会话 注意 我提供客户端
  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 防止单个可执行文件的多个进程实例

    我正在使用 NET 和 C 我想阻止同一可执行文件的两个实例同时运行 但我不想阻止从另一个文件夹运行的同一进程 例如 我有一个位于两个不同位置的可执行文件 C MyProject Master Program exe C MyProject

随机推荐

  • 从 AspectJ 获取返回值或异常?

    我能够从建议的方法调用中获取签名和参数 但我无法弄清楚如何获取返回值或异常 我有点假设它可以通过使用 around 并继续以某种方式完成 您可以使用after returning and after throwing开头的建议以下文件 ht
  • Android 插件太旧(2.4.0-alpha7)

    我正在使用 android studio 2 4 并收到此错误 显然我必须更新我的 android 插件 但是当我检查 jcenter 的新版本时 唯一的版本 可用的是2 5 0 alpha 预览 02 这会导致完全相同的错误 我还在错误消
  • 无法拦截Android应用程序的流量

    最近 我正在尝试测试和拦截来自开发的应用程序的流量罗莫比尔 我设置了一个代理burp 当然 我已经在我的设备上安装了 burp 证书 因此我可以拦截设备上的其他应用程序 但我无法在 burp suite 上看到相关应用程序的流量 相反 该应
  • Neo4j 入门

    我对 neo4j 完全陌生 很抱歉问这样一个基本问题 我已经安装了 neo4j 我正在使用 shell localhost 7474 webadmin console 我正在寻找一个很好的示例 它使用一些 shell 命令从预先存在的图形数
  • jQuery,将分隔符更改为点并除以两个选定的数字

    var result parseFloat lot2 text parseFloat span Price text result text result 如何将选定值从逗号分隔值转换为点分隔值 有这个函数str replace 但我不知道
  • 向 Rails 中的所有活动链接添加“活动”类?

    基本上 我有很多类似这样的代码 link to t profile business path business class active if current page business path business 这不是很干 我想知道是
  • java中调用父构造函数

    我有两节课Parent and Child 而Parent有一个需要 3 个参数的构造函数 class Parent public Parent String host String path int port 现在我想要Child构造函数
  • 在 Hiera 中进行基本数学运算

    我试图根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日 但我什至不知道这是否可能 我想做这样的事情 cron job command do something user myuser hour instance mi
  • 在 C# 中创建 Cron 作业

    我正在用 C 编写一个调度类型应用程序 并允许用户存储他们想要在特定时间运行的任务 现在 我为他们提供了指定运行频率 每日 每周 每月 以及指定时间的选项 然后将其存储在数据库中 我在理解其背后的伪代码时遇到了一些麻烦 并且正在寻找一些有关
  • std::async 可以调用 std::function 对象吗?

    是否可以使用 std async 调用使用 std bind 创建的函数对象 以下代码无法编译 include
  • 删除 highcharts.com 积分链接

    我刚刚购买高图表 http www highcharts com 但制作人员链接仍然出现在我的图表上 这些图表在我的网站上非常突出 并且扭曲了图表视图 我以为我会有一个选项 那么如何删除它呢 您可以自定义制作人员名单 更改 URL 文本 位
  • android中如何处理图片下载不完整的情况?

    我正在应用程序中下载图像以将其填充到用户界面上 这是我用来下载该图像并将其保存到设备外部存储器的代码 File firstDirectory new File Environment getExternalStorageDirectory
  • Haskell FFI - 你能从 Haskell 数据结构中获取 C 指针吗?

    我有很多 C 结构体 结构如下 typedef struct unsigned int a unsigned int b StructA 还有很多功能 比如 void doSomethingWith StructA StructB Stru
  • 以从左到右的模式启动 Activity

    我面临一个问题 我有三项活动 我需要向左滑动开始新活动 Activity1 Activity2 Activity3 means 当我单击按钮时 新活动不应像 Android 行为那样直接显示 我希望新活动来自右侧并显示在当前屏幕上 任何人都
  • 获取DataGridView中特定列的值

    我的 Winforms 应用程序中有一个 datagridview 用户可以单击 datagridview 上的任意位置 然后单击按钮对该数据行执行操作 但是 为了做到这一点 我需要从该行恢复 ID 现在请记住 用户可能尚未单击 ID 列
  • 如何在Python 2.7中访问ODB文件

    我想在 Python 中访问 ODB 文件 使用 LibreOffice Base 创建 并提取一个表以供进一步使用 ODB包含多个表 一种关系设计和多种表单 是否可以在不使用任何 SQL 的情况下实现这一目标 Edit 由于我自己解析这种
  • const QList 警告 = QList() << 0; gcc 4.7.2 的段错误

    因此 主题行中提到的代码会导致 Qt 4 8 3 和 gcc 4 7 2 出现分段错误 这是在 cpp 文件中的任何类 结构之外 并且与 gcc 4 4 一起使用 const QList
  • Cassandra 墓碑对多个查询与单个查询进行计数

    我有一个 cassandra 表定义如下 CREATE TABLE mytable colA text colB text timeCol timestamp colC text PRIMARY KEY colA colB timeCol
  • 如何在plotly dash应用程序中编写数学符号?

    我想在绘图破折号应用程序中绘制数学符号 例如 我尝试过这个 import dash import dash html components as html app dash Dash name app layout html Div chi
  • 如何可靠地检测实际安装的.NET 4.5版本?

    我的实际问题是我遇到了两个版本的 NET 4 5 完整设置 a possibly older one which is also available when downloading SQL Server Data Tools size 5