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



  • 相关阅读:
    【名称解释】#001 IIS名词解释
    【C#】#102 发送邮件
    【C#】#101 导入导出Excel
    【C#】#100 调用摄像头
    【转】【Flex】#010 操作XML文件(E4X)
    【Flex教程】#009 As/typeof /instanceof /is的作用
    4 权限组件、频率、3组件总结
    1 request模块
    4 saltstack ssh
    03 深入远程执行:target目标、模块modules、返回returns
  • 原文地址:https://www.cnblogs.com/myesn/p/5601600.html
Copyright © 2020-2023  润新知