c#查询部署机器的Office应用程序的版本

来源:互联网 发布:网络攻防技术pdf 编辑:程序博客网 时间:2024/05/01 06:31

检测office的应用程序的版本,

public class OfficeVersion    {        /// <summary>        /// 获取Access的提供程序        /// </summary>        /// <returns>是否设置成功</returns>        public static string GetAccessProvider()        {            //检测客户机器上安装的Access版本2000/2003/2007/2010            string version = OfficeVersion.GetAppVersion("Access");            string provider = string.Empty;            switch (version)            {                case "Access 2007":                case "Access 2010":                    provider = "Microsoft.ACE.OLEDB.12.0";                    break;                case "Access 2000":                case "Access xp":                case "Access 2003":                    //default:                    provider = "Microsoft.Jet.OLEDB.4.0";                    break;            }            return provider;        }        //检测客户机器上安装的应用程序版本2000/2003/2007/2010        public static string GetAppVersion(string officeAppName)        {            string result = string.Empty;            RegistryOperate registry = new RegistryOperate("LOCAL_MACHINE");            string[] officeKey = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\");            List<string> listOfficeKey = new List<string>(officeKey);            if (listOfficeKey.Count < 1)            {                return "No Office";            }            if (listOfficeKey.Contains("14.0"))//Office 2010            {                string[] keyItem = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\14.0");                List<string> subKeyItem = new List<string>(keyItem);                if (IsExistSubKey(@"SOFTWARE\\Microsoft\\Office\\14.0", officeAppName))                {                    result = string.Format("{0} 2010", officeAppName);                }            }            if (result.Equals("") && listOfficeKey.Contains("12.0"))//Office 2007            {                string[] keyItem = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\12.0");                List<string> subKeyItem = new List<string>(keyItem);                if (IsExistSubKey(@"SOFTWARE\\Microsoft\\Office\\12.0", officeAppName))                {                    result = string.Format("{0} 2007", officeAppName);                }            }            if (result.Equals("") && listOfficeKey.Contains("11.0"))//Office 2003            {                string[] keyItem = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\11.0");                List<string> subKeyItem = new List<string>(keyItem);                if (IsExistSubKey(@"SOFTWARE\\Microsoft\\Office\\11.0", officeAppName))                {                    result = string.Format("{0} 2003", officeAppName);                }            }            if (result.Equals("") && listOfficeKey.Contains("10.0"))//Office xp            {                string[] keyItem = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\10.0");                List<string> subKeyItem = new List<string>(keyItem);                if (IsExistSubKey(@"SOFTWARE\\Microsoft\\Office\\10.0", officeAppName))                {                    result = string.Format("{0} xp", officeAppName);                }            }            if (result.Equals("") && listOfficeKey.Contains("9.0"))//Office 2000            {                string[] keyItem = registry.GetAllSubKey(@"SOFTWARE\\Microsoft\\Office\\9.0");                List<string> subKeyItem = new List<string>(keyItem);                if (IsExistSubKey(@"SOFTWARE\\Microsoft\\Office\\9.0", officeAppName))                {                    result = string.Format("{0} 2000", officeAppName);                }            }            return result;        }        /// <summary>        /// 判断注册表路径是否存在子项        /// </summary>        /// <param name="path">注册表路径</param>        /// <param name="value">子项名</param>        /// <returns></returns>        private static bool IsExistSubKey(string path, string key)        {            RegistryOperate registry = new RegistryOperate("LOCAL_MACHINE");            string[] keyItem = registry.GetAllSubKey(path);            List<string> listKeyItem = new List<string>(keyItem);            if (listKeyItem.Contains(key))            {                return true;            }            return false;        }    }


原创粉丝点击