2008-10-13 22 views

Antwort

18

Verwenden Sie Programme hinzufügen/entfernen aus der Systemsteuerung.

+0

Go-Figur haben. Später dachte ich, ich hätte einen "programmatischen" Punkt auf deine Frage verpasst, Guy. –

132

Betrachten Sie HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\. Eines davon muss wahr sein:

  • Der Version Wert in diesem Schlüssel sollte 3.5.30729.01
  • Oder der SP Wert in der gleichen Tonart sollte

In C# sein sein (aus dem ersten Kommentar), könnten Sie etwas in diese Richtung tun:

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 Zeichenfolgename = @ "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(); –

+1

Auf meinem Computer ist 'Version' '3.5.30729.5420' und' SP' ist '1' –

+2

In der Befehlszeile: ' reg Abfrage "HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5"/V Version 'reg Anfrage" HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5 "/ V SP' –

27

Sie könnten zu SmallestDotNet mit IE vom Server gehen. Das wird Ihnen die Version mitteilen und auch einen Download-Link bereitstellen, wenn Sie veraltet sind.

+3

Nur sagt Ihnen jedoch die höchste Version, z Wenn Sie 4 haben, wird es Ihnen nicht sagen, ob Sie auch 3,5 sp 1 – codeulike

2

Unter der Annahme, dass der Name ist überall „Microsoft .NET Framework 3.5 SP1“, können Sie diese verwenden:

string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey)) 
{ 
    return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1"); 
} 
+0

+1, der einfachste Weg bis jetzt, um zu überprüfen, ob 3.5 SP1 installiert ist - eigentlich, wenn es funktioniert. Ich habe es versucht, es funktioniert nicht für mich, es gibt immer falsch zurück. –

+0

Beim Durchstreichen der von GetSubKeyNames() zurückgegebenen Sammlung wird der Klartextname für einige Produkte verwendet - für einige - wie die .net-Frameworks - werden die Produkt-IDs {1ea1f -...} verwendet. Deshalb kann es nicht gefunden werden. –

9

Werfen Sie einen Blick auf diese article, die die Registrierungsschlüssel Sie brauchen zu suchen zeigt und bietet eine .NET-Bibliothek, die dies für Sie tun wird.

Zuerst sollten Sie feststellen, ob .NET 3.5 installiert ist, indem Sie HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install betrachten, was ein DWORD-Wert ist. Wenn dieser Wert vorhanden und auf 1 festgelegt ist, wird diese Version des Frameworks installiert.

Sehen Sie sich HKLM \ Software \ Microsoft \ .NET Framework Setup \ NDP \ v3.5 \ SP an. Dies ist ein DWORD-Wert, der die Service Pack-Stufe angibt (0 ist kein Service Pack).

Um korrekt zu sein, müssen Sie wirklich sicherstellen, dass .NET Fx 2.0 und .NET Fx 3.0 zuerst installiert werden und dann überprüfen, ob .NET 3.5 installiert ist. Wenn alle drei wahr sind, können Sie nach dem Service Pack-Level suchen.

+1

Artikel Link wird geändert, hier ist es der neue Standort: http://www.codeproject.com/KB/dotnet/frameworkversiondetection.aspx – Drake

4

Check ist das folgende Verzeichnis vorhanden ist:

In 64-Bit-Maschinen: % SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

In 32-Bit-Maschinen: % SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.NET Framework 3.5 SP1 \

Wo% SYSTEMROOT% ist die Umgebungsvariable SYSTEMROOT (z. B. C: \ Windows).

12

Ich kam zu dieser Seite, während ich versuchte, herauszufinden, wie man die auf einem Server installierten Framework-Versionen ohne Zugriff auf Remote-Desktop oder -Registrierung erkennt, also hat die Antwort von Danny V für mich funktioniert.

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

Arbeitete wie erwartet für mich. Ich habe ein neues Website-Projekt erstellt, den Code hinzugefügt und auf die Freigabe gestellt und dann die Seite angefordert. – XIII

Verwandte Themen