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();
                //软件自启完成
            }



  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/myesn/p/5601600.html
Copyright © 2011-2022 走看看