Eine ähnliche Frage wurde hier gestellt , war jedoch spezifisch für .NET 3.5. Insbesondere suche ich Folgendes:
- Wie kann richtig ermittelt werden, welche .NET Framework-Versionen und Service Packs installiert sind?
- Gibt es eine Liste von Registrierungsschlüsseln, die verwendet werden können?
- Gibt es Abhängigkeiten zwischen Framework-Versionen?
.net
installation
version-detection
Scott Dorman
quelle
quelle
Antworten:
Die Registrierung ist die offizielle Methode, um festzustellen, ob eine bestimmte Version des Frameworks installiert ist.
Welche Registrierungsschlüssel benötigt werden, hängt von der gesuchten Framework-Version ab:
Generell suchen Sie:
mit Ausnahme von .NET 1.0, wo der Wert eine Zeichenfolge (
REG_SZ
) und keine Zahl (REG_DWORD
) ist.Die Bestimmung des Service Pack-Levels erfolgt nach einem ähnlichen Muster:
Wie Sie sehen können, ändert sich das Bestimmen der SP-Stufe für .NET 1.0, wenn Sie unter Windows Media Center oder Windows XP Tablet Edition ausgeführt werden. Auch hier verwendet .NET 1.0 einen Zeichenfolgenwert, während alle anderen ein DWORD verwenden.
Für .NET 1.0 hat der Zeichenfolgenwert an einem dieser Schlüssel das Format #, #, ####, #. Das letzte # ist das Service Pack-Level.
Obwohl ich nicht explizit danach gefragt habe, würden Sie diese Registrierungsschlüssel verwenden, wenn Sie die genaue Versionsnummer des Frameworks wissen möchten:
Auch hier verwendet .NET 1.0 einen Zeichenfolgenwert, während alle anderen ein DWORD verwenden.
Zusätzliche Bemerkungen
Für .NET 1.0 hat der Zeichenfolgenwert an einem dieser Schlüssel das Format
#,#,####,#
. Der#,#,####
Teil der Zeichenfolge ist die Framework-Version.Für .NET 1.1 verwenden wir den Namen des Registrierungsschlüssels selbst, der die Versionsnummer darstellt.
Wenn Sie sich die Abhängigkeiten ansehen, fügt .NET 3.0 .NET 2.0 zusätzliche Funktionen hinzu, sodass sowohl .NET 2.0 als auch .NET 3.0 als installiert ausgewertet werden müssen, um korrekt zu sagen, dass .NET 3.0 installiert ist. Ebenso fügt .NET 3.5 .NET 2.0 und .NET 3.0 zusätzliche Funktionen hinzu. Daher sollten .NET 2.0, .NET 3.0 und .NET 3. als installiert bewertet werden, um korrekt zu sagen, dass .NET 3.5 installiert ist.
.NET 4.0 installiert eine neue Version der CLR (CLR-Version 4.0), die neben CLR 2.0 ausgeführt werden kann.
Update für .NET 4.5
v4.5
Wenn .NET 4.5 installiert ist, ist kein Schlüssel in der Registrierung vorhanden. Stattdessen müssen Sie überprüfen, ob derHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
Schlüssel einen aufgerufenen Wert enthältRelease
. Wenn dieser Wert vorhanden ist, wird .NET 4.5 installiert, andernfalls nicht. Weitere Details finden Sie hier und hier .quelle
Eine offizielle Antwort von Microsoft auf diese Frage finden Sie im folgenden Knowledge Base-Artikel:
Artikel-ID: 318785 - Letzte Überprüfung: 7. November 2008 - Revision: 20.1 So ermitteln Sie, welche Versionen von .NET Framework installiert sind und ob Service Packs angewendet wurden
Leider scheint es nicht zu funktionieren, da die mscorlib.dll-Version im 2.0-Verzeichnis eine 2.0-Version hat und es weder in den 3.0- noch in den 3.5-Verzeichnissen eine mscorlib.dll-Version gibt, obwohl 3.5 SP1 installiert ist ... warum Wäre die offizielle Microsoft-Antwort so falsch informiert?
quelle
Die Betaversion von Framework 4 wird auf einem anderen Registrierungsschlüssel installiert.
quelle
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)
zuRegistry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
, um eine Sicherheitsausnahme für Benutzer ohne Administratorrechte zu vermeiden.Ich wollte feststellen, ob auf meinem System .NET Version 4.5.2 installiert ist, und fand keine bessere Lösung als ASoft .NET Version Detector .
Schnappschuss dieses Tools mit verschiedenen .NET-Versionen:
quelle
Zählen Sie die Unterschlüssel von auf
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
. Jeder Unterschlüssel ist eine .NET- Version. Es sollte einenInstall=1
Wert haben , wenn es auf dem Computer vorhanden ist, einen SP-Wert, der das Service Pack anzeigt, und einenMSI=1
Wert, wenn es mit einer MSI installiert wurde. (.NET 2.0 unter Windows Vista verfügt beispielsweise nicht über das letzte, da es Teil des Betriebssystems ist.)quelle
Für ein 64-Bit-Betriebssystem wäre der Pfad:
quelle
Wow6432Node
Registrierungsschlüssel ist Teil des WOW64-Registrierungsreflektors, der bestimmte Schlüssel und Werte zwischen der 64-Bit- und der 32-Bit-Registrierungsansicht widerspiegelt. Es sollte nicht erforderlich sein, direkt auf diesen Schlüssel zuzugreifen, da die Registrierung die Umleitung und Spiegelung automatisch übernimmt.Update für .NET 4.5.1
Nachdem .NET 4.5.1 verfügbar ist, muss der tatsächliche Wert des Schlüssels mit dem Namen Release in der Registrierung überprüft werden, nicht nur seine Existenz. Ein Wert von 378758 bedeutet, dass .NET Framework 4.5.1 installiert ist. Wie hier beschrieben, ist dieser Wert unter Windows 8.1 jedoch 378675.
quelle
Es gibt ein GUI-Tool, ASoft .NET Version Detector , das sich immer als äußerst zuverlässig erwiesen hat. Es kann XML-Dateien erstellen, indem der Dateiname der XML-Ausgabe in der Befehlszeile angegeben wird.
Sie können dies für die Automatisierung verwenden. Es ist ein winziges Programm, das in einer nicht von NET abhängigen Sprache geschrieben ist und keine Installation erfordert.
quelle
Ich musste herausfinden, welche Version von .NET Framework ich auf meinem Computer hatte, und alles, was ich tat, war, in die Systemsteuerung zu gehen und die Option "Programm deinstallieren" auszuwählen. Danach sortierte ich die Programme nach Namen und fand Microsoft .NET Framework 4 Client Profile.
quelle
Hier ist ein PowerShell-Skript zum Abrufen installierter .NET Framework-Versionen
Es wurde basierend auf folgenden Methoden geschrieben: Bestimmen, welche .NET Framework-Versionen installiert werden . Verwenden Sie die Funktion Get-FrameworkVersion (), um Informationen zu installierten .NET Framework-Versionen abzurufen.
quelle
Mit der Signum.Utilities- Bibliothek von SignumFramework (die Sie eigenständig verwenden können) können Sie sie gut und ohne sich selbst mit der Registrierung befassen:
quelle
Siehe Gewusst wie: Bestimmen, welche .NET Framework-Versionen installiert sind (MSDN).
MSDN schlägt ein Funktionsbeispiel vor, das die Aufgabe für Version 1-4 zu erfüllen scheint. Laut Artikel lautet die Methodenausgabe:
Beachten Sie, dass es für "Versionen 4.5 und höher" eine andere Funktion gibt.
quelle
In Windows 7 (es sollte auch für Windows 8 funktionieren, aber ich habe es nicht getestet):
Gehen Sie zu einer Eingabeaufforderung
Schritte zum Aufrufen einer Eingabeaufforderung:
Geben Sie in cmd diesen Befehl ein
Dadurch wird die neueste Version von NET Framework installiert.
Man kann auch Raymond.cc Utilties für das gleiche versuchen .
quelle
cmd
ich diese Zeile einführe, bekomme ichERROR: Description = Invalid namespace
.ERROR: Description = Invalid namespace