zoukankan      html  css  js  c++  java
  • C#winform检测电脑安装的.netframework版本和是否安装了某软件

    代码如下:

            //C#获取已安装 .NET Framework 版本
            private static string[] GetDotNetVersions()
            {
                DirectoryInfo[] directories = new DirectoryInfo(
                    Environment.SystemDirectory + @"..Microsoft.NETFramework").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(@"SOFTWAREMicrosoftWindowsCurrentVersionUninstall", 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(@"SoftwareMicrosoftWindowsCurrentVersionRun");
                rk2.SetValue("jkytj", baseDirectory);
                rk2.Close();
                rk.Close();
                //软件自启完成
            }



  • 相关阅读:
    python实例26[查询修改文件的属性]
    [SCM]源码管理 VisualSVN Server+TortoiseSVN
    持续集成之“依赖管理”
    Spoon:在“云”上运行桌面应用程序
    数字签名的验证
    判断Linux/Unix为32位或64位
    持续集成理论和实践的新进展
    [SCM]源码管理 SVN Server
    [BuildRelease Management]Parabuild
    为VM增加磁盘空间
  • 原文地址:https://www.cnblogs.com/myesn/p/5601600.html
Copyright © 2011-2022 走看看