如何檢測是否安裝了.NET 2.0和.NET 3.0 [ZT]

來源:互聯網
上載者:User
代碼來自Paint.NET的PaintDotNet.SystemLayer.OS類

這段代碼是通過檢查註冊表中的項來確定.NET 2.0/3.0是否安裝的。由於Paint.NET是由微軟員工參與開發的,可以認為這是比較準確的判斷方法。

        private static bool IsDotNet2VersionInstalled(int major, int minor, int build)
        {
            const string regKeyNameFormat = "Software\\Microsoft\\NET Framework Setup\\NDP\\v{0}.{1}.{2}";
            const string regValueName = "Install";

            string regKeyName = string.Format(regKeyNameFormat, major.ToString(CultureInfo.InvariantCulture),
                minor.ToString(CultureInfo.InvariantCulture), build.ToString(CultureInfo.InvariantCulture));

            return CheckForRegValueEquals1(regValueName, regKeyName);
        }

        private static bool IsDotNet3VersionInstalled(int major, int minor, int build)
        {
            bool result = false;

            const string regValueName = "InstallSuccess";

            if (!result)
            {
                const string regKeyNameFormat = "Software\\Microsoft\\NET Framework Setup\\NDP\\v{0}.{1}\\Setup";
                string regKeyName = string.Format(regKeyNameFormat, major, minor);

                result |= CheckForRegValueEquals1(regKeyName, regValueName);
            }

            if (!result)
            {
                // There seems to be a bug in x64 .NET 3.0 where it only records its success in the 32-bit section of the registry.
                const string regKeyNameFormat2 = "Software\\Wow6432Node\\Microsoft\\NET Framework Setup\\NDP\\v{0}.{1}\\Setup";
                string regKeyName2 = string.Format(regKeyNameFormat2, major, minor);

                result |= CheckForRegValueEquals1(regKeyName2, regValueName);
            }

            return result;
        }

        private static bool CheckForRegValueEquals1(string regKeyName, string regValueName)
        {
            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(regKeyName, false))
            {
                object value = null;

                if (key != null)
                {
                    value = key.GetValue(regValueName);
                }

                return (value != null && value is int && (int)value == 1);
            }
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.