Maison > développement back-end > C++ > Comment puis-je déterminer efficacement la version du .NET Framework et le Service Pack installés ?

Comment puis-je déterminer efficacement la version du .NET Framework et le Service Pack installés ?

Barbara Streisand
Libérer: 2025-01-15 10:18:43
original
627 Les gens l'ont consulté

How Can I Effectively Determine the Installed .NET Framework Version and Service Pack?

Déterminer efficacement la version de .NET Framework

La vérification des versions de .NET Framework, en particulier 3.5 SP 1, est une exigence courante pour les développeurs. Cependant, le simple fait d'utiliser Environment.Version() pour obtenir ces informations ne vous permet d'obtenir que la version de base, en laissant de côté les détails importants tels que les service packs.

Pour ce faire, plusieurs méthodes existent :

Pour .NET 1-4

Une méthode simple et efficace consiste à récupérer les données directement à partir du registre. Pour les versions .NET 1 à 4, vous pouvez utiliser l'extrait de code suivant :

<code class="language-csharp">RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
string[] version_names = installed_versions.GetSubKeyNames();
// version names 以 'v' 开头,例如 'v3.5',在转换前需要去除
double Framework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0));</code>
Copier après la connexion

Dans ce code, la variable "Framework" représente la version installée la plus élevée et "SP" contient le numéro de service pack associé.

Pour .NET 4.5

Pour les versions 4.5 et supérieures, la documentation officielle de Microsoft recommande la méthode suivante :

<code class="language-csharp">using System;
using Microsoft.Win32;


...


private static void Get45or451FromRegistry()
{
    using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\")) {
        int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
        if (true) {
            Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
        }
    }
}


...


// 使用 >= 检查版本将启用前向兼容性,
// 但是您应该始终在新版本的框架上编译代码,以确保您的应用程序以相同的方式工作。
private static string CheckFor45DotVersion(int releaseKey)
{
    if (releaseKey >= 528040) {
        return "4.8 或更高版本";
    }
    if (releaseKey >= 461808) {
        return "4.7.2 或更高版本";
    }
    if (releaseKey >= 461308) {
        return "4.7.1 或更高版本";
    }
    if (releaseKey >= 460798) {
        return "4.7 或更高版本";
    }
    if (releaseKey >= 394802) {
        return "4.6.2 或更高版本";
    }
    if (releaseKey >= 394254) {
        return "4.6.1 或更高版本";
    }
    if (releaseKey >= 393295) {
        return "4.6 或更高版本";
    }
    if (releaseKey >= 393273) {
        return "4.6 RC 或更高版本";
    }
    if ((releaseKey >= 379893)) {
        return "4.5.2 或更高版本";
    }
    if ((releaseKey >= 378675)) {
        return "4.5.1 或更高版本";
    }
    if ((releaseKey >= 378389)) {
        return "4.5 或更高版本";
    }
    // 此行不应该执行。非空 release 密钥应该意味着
    // 已安装 4.5 或更高版本。
    return "未检测到 4.5 或更高版本";
}</code>
Copier après la connexion

Ce code utilise le registre pour déterminer la version installée du .NET Framework et son service pack correspondant.

Grâce à ces technologies, les développeurs peuvent déterminer rapidement et précisément la version de .NET Framework installée, ce qui leur permet de prendre des décisions éclairées et d'assurer la compatibilité avec leurs applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal