我知道官方的方式是註冊表,但這是有點時間消耗。有沒有找到哪個.NET框架安裝在PC上的工具?
我要檢查幾個PC的,他們都沒有VisualStudio的安裝版本,但是所有的人(可能)一個版本的.NET框架的。
由於熱水可能已經存在,我可以在哪裏找到它?
我知道官方的方式是註冊表,但這是有點時間消耗。有沒有找到哪個.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)
查看SmallestDotNet的javascript。還有a good article over at the CodeProject。
這裏是一個代碼,你可以把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腳本時通常遇到此問題。我覺得要做到這一點的最好辦法是在每個以下基本目錄
不要忘記第二個目錄,否則可能會導致應用程序在64位機器上出現故障。
對於每個起點,我尋找匹配目錄v\d+\\.\d+\\.\d+
幷包含文件mscorlib.dll。僅僅查找目錄名是不夠的,因爲名稱可能存在而實際上並未安裝該版本的框架。例如,如果你有一臺vista機器,你也會有v1.0.3705和v1.1.4322,但實際上這些框架都沒有安裝。
當然,用戶代理方法只適用於IE或Firefox和.NET 3.5,如果您沒有禁用該加載項。 – blowdart 2009-04-12 11:43:17