Bagaimana cara mengetahui apakah SP1 telah diinstal di server yang memiliki .NET 3.5?
Jawaban:
Lihat HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Salah satunya harus benar:
Version
nilai dalam kunci yang harus 3.5.30729.01SP
nilai dalam kunci yang sama harus 1Di C # (diambil dari komentar pertama), Anda bisa melakukan sesuatu seperti ini:
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
adalah 3.5.30729.5420
dan SP
sekarang1
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
Anda bisa pergi ke SmallestDotNet menggunakan IE dari server. Itu akan memberi tahu Anda versinya dan juga menyediakan tautan unduhan jika Anda ketinggalan zaman.
Saya membuka halaman ini ketika mencoba mencari cara untuk mendeteksi versi framework yang diinstal di server tanpa akses ke desktop atau registry jarak jauh, jadi jawaban Danny V berhasil untuk saya.
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 );
}
}
Lihat artikel ini yang menunjukkan kunci registri yang perlu Anda cari dan menyediakan pustaka .NET yang akan melakukannya untuk Anda.
Pertama, Anda harus menentukan apakah .NET 3.5 diinstal dengan melihat HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, yang merupakan nilai DWORD. Jika nilai itu ada dan disetel ke 1, maka versi Kerangka tersebut diinstal.
Lihat HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, yang merupakan nilai DWORD yang menunjukkan tingkat Paket Layanan (di mana 0 adalah bukan paket layanan).
Untuk benar tentang berbagai hal, Anda benar-benar perlu memastikan bahwa .NET Fx 2.0 dan .NET Fx 3.0 diinstal terlebih dahulu dan kemudian periksa untuk melihat apakah .NET 3.5 diinstal. Jika ketiganya benar, maka Anda dapat memeriksa tingkat paket layanan.
Periksa apakah direktori berikut ada:
Di mesin 64bit:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Di mesin 32bit:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Di mana% SYSTEMROOT% adalah variabel lingkungan SYSTEMROOT (mis. C: \ Windows).
Dengan asumsi bahwa nama ada di mana-mana "Microsoft .NET Framework 3.5 SP1", Anda dapat menggunakan ini:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}