Jak mogę się dowiedzieć, czy dodatek SP1 został zainstalowany na serwerze z .NET 3.5?
Odpowiedzi:
Popatrz HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Jedna z nich musi być prawdziwa:
Version
Wartość tego klucza powinna być 3.5.30729.01SP
wartość w tym samym kluczu powinna wynosić 1W C # (zaczerpniętym z pierwszego komentarza) możesz zrobić coś w ten sposób:
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
jest 3.5.30729.5420
i SP
jest1
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
Możesz przejść do SmallestDotNet za pomocą IE z serwera. To powie ci wersję, a także zapewni link do pobrania, jeśli jesteś nieaktualny.
Przyszedłem na tę stronę, próbując dowiedzieć się, jak wykryć wersje frameworka zainstalowane na serwerze bez dostępu do zdalnego pulpitu lub rejestru, więc odpowiedź Danny'ego V zadziałała.
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 );
}
}
Zapoznaj się z tym artykułem, w którym przedstawiono klucze rejestru, których musisz szukać, i bibliotekę .NET, która zrobi to za Ciebie.
Najpierw należy sprawdzić, czy .NET 3.5 jest zainstalowany, sprawdzając plik HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, który jest wartością DWORD. Jeśli ta wartość jest obecna i ustawiona na 1, ta wersja platformy jest zainstalowana.
Spójrz na HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, która jest wartością DWORD, która wskazuje poziom dodatku Service Pack (gdzie 0 to brak dodatku Service Pack).
Aby mieć rację, naprawdę musisz najpierw upewnić się, że .NET Fx 2.0 i .NET Fx 3.0 są zainstalowane, a następnie sprawdzić, czy jest zainstalowany .NET 3.5. Jeśli wszystkie trzy są prawdziwe, możesz sprawdzić poziom dodatku Service Pack.
Sprawdź, czy istnieje następujący katalog:
Na komputerach 64-bitowych:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Na komputerach 32-bitowych:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Gdzie% SYSTEMROOT% jest zmienną środowiskową SYSTEMROOT (np. C: \ Windows).
Zakładając, że wszędzie występuje nazwa „Microsoft .NET Framework 3.5 SP1”, możesz użyć tego:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}