Comment puis-je savoir si SP1 a été installé sur un serveur doté de .NET 3.5?
Réponses:
Regardez HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. L'un de ces éléments doit être vrai:
Version
valeur de cette clé doit être 3.5.30729.01SP
valeur de la même clé doit être 1En C # (tiré du premier commentaire), vous pouvez faire quelque chose du genre:
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
est 3.5.30729.5420
et SP
est1
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
Vous pouvez accéder à SmallestDotNet en utilisant IE à partir du serveur. Cela vous indiquera la version et fournira également un lien de téléchargement si vous êtes obsolète.
Je suis venu sur cette page en essayant de comprendre comment détecter les versions de framework installées sur un serveur sans accès au bureau ou au registre à distance, donc la réponse de Danny V a fonctionné pour moi.
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 );
}
}
Jetez un œil à cet article qui montre les clés de registre que vous devez rechercher et fournit une bibliothèque .NET qui le fera pour vous.
Tout d'abord, vous devez déterminer si .NET 3.5 est installé en examinant HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, qui est une valeur DWORD. Si cette valeur est présente et définie sur 1, cette version du Framework est installée.
Regardez HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, qui est une valeur DWORD qui indique le niveau du Service Pack (où 0 est aucun Service Pack).
Pour être correct sur les choses, vous devez vraiment vous assurer que .NET Fx 2.0 et .NET Fx 3.0 sont installés en premier, puis vérifier si .NET 3.5 est installé. Si les trois sont vrais, vous pouvez vérifier le niveau du Service Pack.
Vérifiez que le répertoire suivant existe:
Sur les machines 64 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Sur les machines 32 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Où% SYSTEMROOT% est la variable d'environnement SYSTEMROOT (par exemple C: \ Windows).
En supposant que le nom est partout «Microsoft .NET Framework 3.5 SP1», vous pouvez utiliser ceci:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}