SP1'in .NET 3.5 olan bir sunucuya kurulup kurulmadığını nasıl öğrenebilirim?
Yanıtlar:
Bak HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Bunlardan biri doğru olmalı:
Version
anahtardaki değer 3.5.30729.01 olmalıdırSP
aynı anahtardaki değer 1 olmalıdırC # 'da (ilk yorumdan alınmıştır), şu satırlar boyunca bir şeyler yapabilirsiniz:
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
olduğu 3.5.30729.5420
ve SP
bir1
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
Sunucudan IE'yi kullanarak SmallestDotNet'e gidebilirsiniz . Bu size sürümü söyleyecek ve ayrıca güncel değilseniz bir indirme bağlantısı sağlayacaktır.
Uzak masaüstüne veya kayıt defterine erişimi olmayan bir sunucuda kurulu çerçeve sürümlerini nasıl tespit edeceğimi bulmaya çalışırken bu sayfaya geldim, bu yüzden Danny V'nin cevabı benim için çalıştı.
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 );
}
}
Aramanız gereken kayıt defteri anahtarlarını gösteren ve bunu sizin için yapacak bir .NET kitaplığı sağlayan bu makaleye bir göz atın .
Öncelikle, bir DWORD değeri olan HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install'a bakarak .NET 3.5'in kurulu olup olmadığını belirlemelisiniz. Bu değer mevcutsa ve 1 olarak ayarlanmışsa, o zaman Framework'ün bu sürümü yüklenir.
HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP'ye bakın; bu, Service Pack düzeyini gösteren bir DWORD değeri (burada 0, hizmet paketi değildir).
Doğru olmak için, öncelikle .NET Fx 2.0 ve .NET Fx 3.0'ın kurulu olduğundan emin olmanız ve ardından .NET 3.5'in yüklü olup olmadığını kontrol etmeniz gerekir. Üçü de doğruysa, hizmet paketi düzeyini kontrol edebilirsiniz.
Aşağıdaki dizinin mevcut olup olmadığını kontrol edin:
64bit makinelerde:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
32bit makinelerde:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
% SYSTEMROOT%, SYSTEMROOT ortam değişkenidir (örn. C: \ Windows).
Adın her yerde "Microsoft .NET Framework 3.5 SP1" olduğunu varsayarsak, şunu kullanabilirsiniz:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}