回答:
見てくださいHKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
。次のいずれかが真である必要があります。
Version
そのキーの値は3.5.30729.01である必要がありますSP
同じキーの値は1である必要がありますC#(最初のコメントから取得)では、次の行に沿って何かを行うことができます。
const string name = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5";
RegistryKey subKey = Registry.LocalMachine.OpenSubKey(name);
var version = subKey.GetValue("Version").ToString();
var servicePack = subKey.GetValue("SP").ToString();
Version
あり3.5.30729.5420
とSP
ある1
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V Version
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V SP
サーバーからIEを使用してSmallestDotNetにアクセスできます。これにより、バージョンがわかり、古くなっている場合はダウンロードリンクも表示されます。
リモートデスクトップやレジストリにアクセスせずにサーバーにインストールされているフレームワークのバージョンを検出する方法を見つけようとしているときにこのページにアクセスしたので、Danny Vの答えがうまくいきました。
string path = System.Environment.SystemDirectory;
path = path.Substring( 0, path.LastIndexOf('\\') );
path = Path.Combine( path, "Microsoft.NET" );
// C:\WINDOWS\Microsoft.NET\
string[] versions = new string[]{
"Framework\\v1.0.3705",
"Framework64\\v1.0.3705",
"Framework\\v1.1.4322",
"Framework64\\v1.1.4322",
"Framework\\v2.0.50727",
"Framework64\\v2.0.50727",
"Framework\\v3.0",
"Framework64\\v3.0",
"Framework\\v3.5",
"Framework64\\v3.5",
"Framework\\v3.5\\Microsoft .NET Framework 3.5 SP1",
"Framework64\\v3.5\\Microsoft .NET Framework 3.5 SP1",
"Framework\\v4.0",
"Framework64\\v4.0"
};
foreach( string version in versions )
{
string versionPath = Path.Combine( path, version );
DirectoryInfo dir = new DirectoryInfo( versionPath );
if( dir.Exists )
{
Response.Output.Write( "{0}<br/>", version );
}
}
検索する必要があるレジストリキーを示し、これを行う.NETライブラリを提供するこの記事をご覧ください。
まず、DWORD値であるHKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Installを見て、.NET 3.5がインストールされているかどうかを確認する必要があります。その値が存在し、1に設定されている場合、そのバージョンのFrameworkがインストールされます。
HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SPを確認します。これは、サービスパックレベルを示すDWORD値です(0はサービスパックなし)。
正しいことを行うには、まず.NET Fx 2.0と.NET Fx 3.0がインストールされていることを確認してから、.NET 3.5がインストールされているかどうかを確認する必要があります。3つすべてが当てはまる場合は、サービスパックレベルを確認できます。
名前がどこでも「Microsoft .NET Framework 3.5 SP1」であるとすると、これを使用できます。
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}