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


91

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

回答:


18

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


1
図を行きます。その後、私はあなたの質問を「プログラム的に」指摘し損ねたと思いました、ガイ。
rp。

135

見てください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();

8
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();
クリスクラフト

2
私のマシンでは、Versionあり3.5.30729.5420SPある1
ケビン・スミス

2
コマンドライン: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
Kevin Smyth

問題が発生します。ユーザーに.NETがインストールされていない場合、.NETで作成されたプログラムは、.NETがインストールされているかどうかを検出するためにどのように実行されますか?
zwcloud

27

サーバーからIEを使用してSmallestDotNetにアクセスできます。これにより、バージョンがわかり、古くなっている場合はダウンロードリンクも表示されます。


4
唯一のあなたは4を持っている場合、それはあなたも3.5 SP 1を持っているかどうかを教えて文句を言わないなど、最高のバージョンけれども告げる
codeulike

12

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

期待どおりに動作しました。新しいWebサイトプロジェクトを作成し、コードを追加して共有に配置し、ページを要求しました。
クリスファンデルマスト

9

検索する必要があるレジストリキーを示し、これを行う.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つすべてが当てはまる場合は、サービスパックレベルを確認できます。


1
記事のリンクが変更されました。ここが新しい場所です:codeproject.com/KB/dotnet/frameworkversiondetection.aspx
Drake

5

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

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など)です。


2

名前がどこでも「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");
}

+1、これまでのところ、プログラムで3.5 SP1がインストールされているかどうかを確認する最も簡単な方法-実際に機能しているかどうか。私はそれを試しました、それは私にとってはうまくいきません、それは常に偽を返します。
Eugene Beresovsky

GetSubKeyNames()によって返されたコレクションをざっと見て、一部の製品ではプレーンテキスト名が使用されます。.netフレームワークのように、製品ID {1ea1f -...}が使用されています。それが見つからない理由です。
ユージーンベレソフスキー2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.