C#winform檢測電腦安裝的.netframework版本和是否安裝了某軟件


代碼如下:

        //C#獲取已安裝 .NET Framework 版本
        private static string[] GetDotNetVersions()
        {
            DirectoryInfo[] directories = new DirectoryInfo(
                Environment.SystemDirectory + @"\..\Microsoft.NET\Framework").GetDirectories("v?.?.*");
            ArrayList list = new ArrayList();
            foreach (DirectoryInfo info2 in directories)
            {
                list.Add(info2.Name.Substring(1));
            }
            return (list.ToArray(typeof(string)) as string[]);
        }

        /// <summary>  
        /// 確認電腦上是否安裝有某個程序
        /// </summary>  
        /// <param name="softWareName">程序安裝后的名稱</param>
        /// <returns>true: 有安裝, false:沒有安裝</returns>  
        private static bool CheckSoftWartInstallState(string softWareName = "Adobe Reader")
        {
            Microsoft.Win32.RegistryKey uninstallNode =
                Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.ReadKey);
            foreach (string subKeyName in uninstallNode.GetSubKeyNames())
            {
                Microsoft.Win32.RegistryKey subKey = uninstallNode.OpenSubKey(subKeyName);
                object displayName = subKey.GetValue("DisplayName");
                if (displayName != null)
                {
                    if (displayName.ToString().Contains(softWareName))
                    {
                        return true;
                        // MessageBox.Show(displayName.ToString());  
                    }
                }
            }
            return false;
        }

        /// <summary>
        /// 程序運行前檢測
        /// </summary>
        public static void ApplicationBeforeRunCheck()
        {
            string[] deviceName = { "PL-2303 USB-to-Serial",
                                      "Microsoft ReportViewer 2010 Redistributable",
                                      "二代證讀寫機具USB驅動"};
            string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string[] netList = GetDotNetVersions();
            bool dotNetIsOk = false;
            for (int i = 0; i < netList.Length; i++)
            {
                if (netList[i][0] == 4)
                    dotNetIsOk = true;
            }
            if (!dotNetIsOk)
            {
                Process.Start(Path.Combine(baseDirectory, "4.exe"));
                while (true)
                {
                    for (int i = 0; i < netList.Length; i++)
                        if (netList[i][0] == 4) break;
                    Thread.Sleep(1000);
                }
            }
            for (int i = 0; i < deviceName.Length; i++)
            {
                if (!CheckSoftWartInstallState(deviceName[i]))
                {
                    Process.Start(Path.Combine(baseDirectory, ((i + 1) + ".exe")));
                    while (true)
                    {
                        if (CheckSoftWartInstallState(deviceName[i]))
                            break;
                        Thread.Sleep(1000);
                    }
                }
            }
            //軟件安裝完成            
            RegistryKey rk = Registry.LocalMachine;
            RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
            rk2.SetValue("jkytj", baseDirectory);
            rk2.Close();
            rk.Close();
            //軟件自啟完成
        }



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM