webdevqa.jp.net

.NET 3.5 SP1がインストールされているかどうかを確認するにはどうすればよいですか?

.NET 3.5がインストールされているサーバーにSP1がインストールされているかどうかを確認するにはどうすればよいですか?

89
Guy

コントロールパネルの[プログラムの追加と削除]を使用します。

18
rp.

HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\を見てください。次のいずれかが真でなければなりません。

  • そのキーのVersion値は.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();
133
Ray

サーバーからIEを使用して SmallestDotNet に移動できます。それはあなたにバージョンを教えて、あなたが時代遅れならダウンロードリンクも提供します。

27
Andy May

リモートデスクトップまたはレジストリにアクセスせずにサーバーにインストールされたフレームワークバージョンを検出する方法を見つけようとしてこのページに来たので、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 );
    }
}
12
Matt

これをご覧ください article これは、探す必要があるレジストリキーを示し、これを行う.NETライブラリを提供します。

最初に、HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install(DWORD値)を見て、.NET 3.5がインストールされているかどうかを確認する必要があります。その値が存在し、1に設定されている場合、そのバージョンのフレームワークがインストールされます。

HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\SPを確認します。これは、サービスパックレベル(0はサービスパックなし)を示すDWORD値です。

物事を正しくするには、.NET Fx 2.0および.NET Fx 3.0が最初にインストールされていることを確認してから、.NET 3.5がインストールされているかどうかを確認する必要があります。 3つすべてが当てはまる場合は、サービスパックのレベルを確認できます。

9
Scott Dorman

次のディレクトリが存在することを確認します。

64ビットマシンの場合:%SYSTEMROOT%\ Microsoft.NET\Framework64\v3.5\Microsoft .NET Framework 3.5 SP1 \

32ビットマシンの場合:%SYSTEMROOT%\ Microsoft.NET\Framework\v3.5\Microsoft .NET Framework 3.5 SP1 \

ここで、%SYSTEMROOT%はSYSTEMROOT環境変数です(例:C:\ Windows)。

5
Danny Varod

名前が「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");
}
2
Panos