65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET Framework 检测器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (32投票s)

2018年8月14日

CPOL

3分钟阅读

viewsIcon

79709

downloadIcon

7240

列出所有可用的 .NET Framework,并检查已安装应用程序的链接 .NET 组件

引言

用户可以在他们的计算机上安装和运行多个版本的 .NET Framework。 在开发或部署应用程序时,您可能需要知道目标计算机上安装了哪些 .NET Framework 版本。 本文管理一种罕见(但可能发生)的情况,即没有安装任何 .NET Framework。 为此,它从一个纯 C++ 应用程序(Starter)开始,该应用程序不需要任何 .NET 组件,以检查是否至少安装了一个 .NET Framework。 如果是,则启动主应用程序并显示一个带有已定位组件的 GUI。 现在用户可以选择一个目录来检查其中的所有 *.EXE*.DLL*.OCX 文件是否满足 .NET 要求。

背景

要获取计算机上安装的 .NET Framework 版本的准确列表,我们需要查看注册表。 此功能附带 Microsoft 的文档 此处。 要查找 .NET Framework 1 - 4,我们需要使用以下子项

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

对于版本 4.5 及更高版本,我们正在寻找以下子项

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

.NET Framework 4.5 and later

Release DWORD 的值 版本
378389 .NET Framework 4.5
378675 .NET Framework 4.5.1 与 Windows 8.1 或 Windows Server 2012 R2 一起安装
378758 .NET Framework 4.5.1 安装在 Windows 8、Windows 7 SP1 或 Windows Vista SP2 上
379893 .NET Framework 4.5.2
Windows 10:393295
在所有其他操作系统版本上:393297
.NET Framework 4.6
Windows 10 November Update:394254
在所有其他操作系统版本上:394271
.NET Framework 4.6.1
Windows Server 2016:394802
在所有其他操作系统版本上:394806
.NET Framework 4.6.2
Windows 10 Creators Update:460798
在所有其他操作系统版本上:460805
.NET Framework 4.7
Windows 10 Creators Update:461308
在所有其他操作系统版本上:461310
.NET Framework 4.7.1
Windows 10 April 2018:461808
在所有其他操作系统版本上:461814
.NET Framework 4.7.2

这正是该工具所做的

int GetNetfxSpLevel(string pszNetfxRegKeyName, string pszNetfxRegValueName)
{      
     try
     {
        var oRet = Registry.GetValue(pszNetfxRegKeyName, pszNetfxRegValueName, "");
        if (oRet != null) 
           return (Int32)oRet;
      }
      catch (Exception ex)
      {
        _oLog.Write(ex);
       }
       return -1;
}

使用工具

启动 CheckDotNet.exe 后,如果您的系统上绝对没有 .NET Framework,您将看到以下消息框

Nothing found

然而,这应该是一种非常罕见的情况。

通常,会发现一个或多个组件,并且 CheckDotNet.exe 将启动用 C# 编写的 GUI 应用程序

它在左侧列出可用的与未安装的组件。

在右侧,您可以扫描目标目录以检查其中的所有应用程序是否满足 .NET 依赖项。

现在有一个 CMD 命令行模式,非常感谢 LightTempler

CMD Mode

[更新]

更新为检测高达 .NET 4.8.1,非常感谢 Peter Thomas!

历史

  • 当前版本 1.0.0
  • 添加了命令行版本 Win32Analyser.zip
  • 更新到版本 2.0.0,通过添加对 .NET 4.6.2、4.7、4.7.1、4.7.2 的识别
  • 更新到版本 3.2.0
  • 更新到版本 10.1.0
© . All rights reserved.