【问题标题】:Is there a tool out there to find out which .NET framework is installed on a PC?是否有工具可以找出 PC 上安装了哪个 .NET 框架?
【发布时间】:2013-02-12 21:33:52
【问题描述】:

我知道官方的方式是注册,但这有点费时。

我必须检查几台 PC 上已安装的版本,它们都没有 VisualStudio,但它们都(可能)一个版本的 .NET 框架。

既然热水可能已经存在,我在哪里可以找到它?

【问题讨论】:

    标签: .net


    【解决方案1】:

    这是一个免费的轻量级工具,可以快速完成 - .NET Version detector 2007

    如果您想手动操作,this page 提供了 4-5 种好方法。 MS Support page 提供了一种简单的方法,只需打开 Framework 文件夹并检查已安装的版本(文件夹名称)!

    但是,如果您想以编程方式执行此操作,HttpBrowserCapabilities 类提供了一个 GetClrVersions() 方法,该方法可通过 Request.Browser.GetClrVersions() 调用访问。当然,正如其他人所提到的,您也可以随时通过 Javascript 查询浏览器的 Navigator.UserAgent 属性(我认为这只会在 IE 中向您显示 .NET 版本):

    javascript:alert(navigator.userAgent)
    

    【讨论】:

      【解决方案2】:
      1. 尝试smallestdotnet的主页,它正在使用您浏览器的用户代理来检查您拥有的.net版本。
      2. 转到 \Windows\Microsoft.NET\Framework\ 您将看到您拥有的所有版本。

      【讨论】:

        【解决方案3】:

        我在编写 PowerShell 脚本时经常遇到这个问题。我发现最好的方法是在以下每个基本目录中运行以下检查

        • %WINDIR%\Microsoft.Net\Framework
        • %WINDIR%\Microsoft.Net\Framework64

        不要忘记第二个目录,否则您的应用程序可能会在 64 位机器上崩溃。

        对于每个起点,我都会查找与 v\d+\\.\d+\\.\d+ 匹配的目录并包含文件 mscorlib.dll。仅查找目录名称是不够的,因为名称可能存在而实际上没有安装该版本的框架。例如,如果你有一台 vista 机器,你也会有 v1.0.3705 和 v1.1.4322,但实际上都没有安装这些框架。

        【讨论】:

          【解决方案4】:

          这是一个代码,您可以将其放入 ASP.net 站点或 winforms 中

          
          using System;
          using System.Collections.Generic;
          using System.Text;
          using System.Runtime.InteropServices;
          
          namespace ConsoleApplication1
          {
          class Program
          {
          [DllImport("mscoree.dll")]
          private static extern int GetCORSystemDirectory(
          [MarshalAs(UnmanagedType.LPWStr)]StringBuilder pbuffer,
          int cchBuffer, ref int dwlength);
          
          static void Main(string[] args)
          {
          GetClrInstallationDirectory();
          }
          
          private static void GetClrInstallationDirectory()
          {
          int MAX_PATH = 260;
          StringBuilder sb = new StringBuilder(MAX_PATH);
          GetCORSystemDirectory(sb, MAX_PATH, ref MAX_PATH);
          Console.WriteLine(sb.ToString());
          while(Console.Read() != 'q') ;
          }
          
          }
          } 

          【讨论】:

            【解决方案5】:

            看看来自SmallestDotNet 的javascript。还有a good article over at the CodeProject

            【讨论】:

            • 当然,用户代理方法只适用于 IE,或者 Firefox 和 .NET 3.5,如果您没有禁用该加载项。
            猜你喜欢
            • 2012-05-29
            • 2011-03-23
            • 2011-01-27
            • 1970-01-01
            • 1970-01-01
            • 2011-01-31
            • 1970-01-01
            • 2010-11-05
            • 2010-12-02
            相关资源
            最近更新 更多