c# 判断office是否安装 C#判断office版本

因为程序需要判断office2010版本以上才可以使,网上找了好多检测office版本都不能用,

参考https://jingyan.baidu.com/article/2c8c281d0844084008252a8f.html

根据注册表信息检查,代码改进了一下office2007 2010,2013,2016都能检测到

public void checkOffice()
        {
            bool ifused = false;
            int officeVersion = 0;

            RegistryKey rk = Registry.LocalMachine;
            RegistryKey akey07 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Excel\InstallRoot\");//查询2007
            RegistryKey akey10 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Excel\InstallRoot\");//查询2010
            RegistryKey akey13 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Excel\InstallRoot\");//查询2013
            RegistryKey akey16 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Excel\InstallRoot\");//查询2016

            //检查本机是否安装Office2007
            if (akey07 != null)
            {
                string office07 = akey07.GetValue("Path").ToString();
                if (File.Exists(office07 + "Excel.exe"))
                {
                    ifused = true;
                    officeVersion = 2007;
                }
            }

            //检查本机是否安装Office2010
            if (akey10 != null)
            {
                string office10 = akey10.GetValue("Path").ToString();
                if (File.Exists(office10 + "Excel.exe"))
                {
                    ifused = true;
                    officeVersion = 2010;
                }
            }

            //检查本机是否安装Office2013
            if (akey13 != null)
            {
                string office13 = akey13.GetValue("Path").ToString();
                if (File.Exists(office13 + "Excel.exe"))
                {
                    ifused = true;
                    officeVersion = 2013;
                }

            }

            //检查本机是否安装Office2016       
            if (akey16 != null)
            {
                string office16 = akey16.GetValue("Path").ToString();
                if (File.Exists(office16 + "Excel.exe"))
                {
                    ifused = true;
                    officeVersion = 2016;
                }
            }


            Debug.WriteLine("result:"+ ifused.ToString());
            Debug.WriteLine("office:" + officeVersion.ToString());
        }

debug调试结果:
result:True
office:2016

posted @ 2020-03-09 14:07  为乐而来  阅读(2594)  评论(2编辑  收藏  举报