Antworten:
Schau dir an HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Eines davon muss wahr sein:
Version
Wert in diesem Schlüssel sollte 3.5.30729.01 seinSP
Wert im selben Schlüssel sollte 1 seinIn C # (aus dem ersten Kommentar entnommen) können Sie Folgendes 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();
Version
ist 3.5.30729.5420
und SP
ist1
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
Sie können mit dem IE vom Server zu SmallestDotNet wechseln. Das wird Ihnen die Version mitteilen und auch einen Download-Link bereitstellen, wenn Sie veraltet sind.
Ich bin auf diese Seite gekommen, als ich versucht habe, herauszufinden, wie die auf einem Server installierten Framework-Versionen ohne Zugriff auf Remotedesktop oder Registrierung erkannt werden können. Die Antwort von Danny V hat also 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 );
}
}
Schauen Sie sich diesen Artikel an, der die Registrierungsschlüssel zeigt, nach denen Sie suchen müssen, und eine .NET-Bibliothek bereitstellt, die dies für Sie erledigt.
Zunächst sollten Sie feststellen, ob .NET 3.5 unter HKLM \ Software \ Microsoft \ NET Framework-Setup \ NDP \ v3.5 \ Install installiert ist. Dies ist ein DWORD-Wert. Wenn dieser Wert vorhanden und auf 1 gesetzt 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-Ebene angibt (wobei 0 kein Service Pack ist).
Um dies zu korrigieren, müssen Sie zuerst sicherstellen, dass .NET Fx 2.0 und .NET Fx 3.0 installiert sind, und dann überprüfen, ob .NET 3.5 installiert ist. Wenn alle drei zutreffen, können Sie nach dem Service Pack-Level suchen.
Überprüfen Sie, ob das folgende Verzeichnis vorhanden ist:
Auf 64-Bit-Computern:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Auf 32-Bit-Computern:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Dabei ist% SYSTEMROOT% die Umgebungsvariable SYSTEMROOT (z. B. C: \ Windows).
Angenommen, der Name lautet überall "Microsoft .NET Framework 3.5 SP1", können Sie Folgendes 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");
}