有没有找到哪个.NET框架安装在PC上的工具?

问题描述:

我知道官方的方式是注册表,但这是有点时间消耗。有没有找到哪个.NET框架安装在PC上的工具?

我要检查几个PC的,他们都没有VisualStudio的安装版本,但是所有的人(可能)一个版本的.NET框架的。

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

这里有一个免费的轻量级的工具,做它快速 - 如果你想要做手工.NET Version detector 2007

this page显示4-5好办法做到这一点。 MS Support page提供了一种方法,只需打开Framework文件夹并检查已安装的版本(文件夹名称)即可!

但是,如果你想以编程方式做到这一点,在HttpBrowserCapabilities类提供了一个GetClrVersions()方法就是通过Request.Browser.GetClrVersions()电话访问。当然,正如其他人所说,你可以随时查询浏览器的navigator.userAgent的属性也通过JavaScript(我认为这会告诉你只能在IE的.NET版本):

javascript:alert(navigator.userAgent) 

+0

当然,用户代理方法只适用于IE或Firefox和.NET 3.5,如果您没有禁用该加载项。 – blowdart 2009-04-12 11:43:17

  1. 尝试smallestdotnet主页是使用浏览器的用户代理,以检查您的.NET版本。
  2. goto \ Windows \ Microsoft.NET \ Framework \你会看到你拥有的所有版本。

这里是一个代码,你可以把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') ; 
} 

} 
}

我在编写PowerShell脚本时通常遇到此问题。我觉得要做到这一点的最好办法是在每个以下基本目录

  • %WINDIR%\ Microsoft.Net \框架
  • %WINDIR%\ Microsoft.Net \ Framework64
  • 的运行下面的检查

不要忘记第二个目录,否则可能会导致应用程序在64位机器上出现故障。

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