.NET 3.5 SP1'in yüklü olup olmadığını nasıl anlarım?


91

SP1'in .NET 3.5 olan bir sunucuya kurulup kurulmadığını nasıl öğrenebilirim?

Yanıtlar:


18

Kontrol Panelinden Program Ekle / Kaldır'ı kullanın.


1
Şekle gidin. Daha sonra, sorunuza "programlı" bir noktayı kaçırdığımı düşündüm Guy.
rp.

135

Bak HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\. Bunlardan biri doğru olmalı:

  • Bu Versionanahtardaki değer 3.5.30729.01 olmalıdır
  • Veya SPaynı anahtardaki değer 1 olmalıdır

C # '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();

8
const string name = @ "YAZILIM \ Microsoft \ NET Framework Kurulumu \ NDP \ v3.5"; RegistryKey subKey = Registry.LocalMachine.OpenSubKey (ad); var version = subKey.GetValue ("Sürüm"). ToString (); var servicePack = subKey.GetValue ("SP"). ToString ();
Chris Craft

2
Benim makinede Versionolduğu 3.5.30729.5420ve SPbir1
Kevin Smyth

2
Komut satırında: 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

Bir sorun olacaktır: Bir kullanıcının .NET yüklü değilse, .NET ile yazılmış programınız .NET'in yüklü olup olmadığını anlamak için nasıl çalışır ?
zwcloud

27

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.


4
Size sadece en yüksek sürümü söyler, örneğin 4'e sahipseniz, aynı zamanda 3.5 sp 1'e sahip olup olmadığınızı söylemez
kod benzeri

12

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 );
    }
}

Benim için beklendiği gibi çalıştı. Yeni bir web sitesi projesi oluşturdum, kodu ekledim ve paylaşıma koyduktan sonra sayfayı talep etti.
Kris van der Mast

9

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.


1
makale bağlantısı değiştirildi, işte yeni konum: codeproject.com/KB/dotnet/frameworkversiondetection.aspx
Drake

5

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).


2

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");
}

+1, 3.5 SP1'in yüklü olup olmadığını programlı olarak kontrol etmenin şimdiye kadarki en kolay yolu - aslında işe yaradıysa. Denedim, benim için çalışmıyor, her zaman yanlış döndürüyor.
Evgeniy Berezovsky

GetSubKeyNames () tarafından döndürülen koleksiyona göz atıldığında, bazı ürünler için düz metin adı kullanılır, bazıları için - .net çerçeveleri gibi, ürün kimlikleri {1ea1f -...} kullanılmaktadır. Bu yüzden bulunamıyor.
Evgeniy Berezovsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.