C#通过操作注册表检测office版本
2017-01-17 11:36
1221 查看
在编写毕业论文辅助编辑软件时,需要检测用户是否安装office以及office的版本,后来在网上找到通过注册表检测的方法,不过由于Windows32位软件和64位软件操作的注册表是不同的,关于这个问题,可以看我转载的博客C#32位程序与64位程序读\写注册表的区别
由于毕业论文辅助编辑软件是一款32位的软件,使用该方法无法访问64位的注册表,通过百度查阅,我修改了代码让它访问64位的注册表来检测office版本。
贴上代码
通过先访问32位注册表,再访问64位注册表来检测office的版本。
由于毕业论文辅助编辑软件是一款32位的软件,使用该方法无法访问64位的注册表,通过百度查阅,我修改了代码让它访问64位的注册表来检测office版本。
贴上代码
/// <summary> /// 通过注册表检测office版本 /// </summary> /// <param name="OfficeVersion">储存office版本的字符串</param> /// <returns></returns> private static bool OfficeIsInstall(out string OfficeVersion) { OfficeVersion = ""; Microsoft.Win32.RegistryKey regKey = null; Microsoft.Win32.RegistryKey regSubKey1 = null; Microsoft.Win32.RegistryKey regSubKey2 = null; Microsoft.Win32.RegistryKey regSubKey3 = null; Microsoft.Win32.RegistryKey regSubKey4 = null; regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); regSubKey1 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", false); regSubKey2 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot", false); regSubKey3 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot", false); regSubKey4 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot", false); if (regSubKey4 != null && regSubKey4.GetValue("Path") != null) { OfficeVersion = "2013"; return true; } else if (regSubKey3 != null && regSubKey3.GetValue("Path") != null) { OfficeVersion = "2010"; return true; } else if (regSubKey2 != null && regSubKey2.GetValue("Path") != null) { OfficeVersion = "2007"; return true; } else if (regSubKey1 != null && regSubKey1.GetValue("Path") != null) { OfficeVersion = "2003"; return true; } else { regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); regSubKey1 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", false); regSubKey2 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot", false); regSubKey3 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot", false); regSubKey4 = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot", false); if (regSubKey4 != null && regSubKey4.GetValue("Path") != null) { OfficeVersion = "2013"; return true; } else if (regSubKey3 != null && regSubKey3.GetValue("Path") != null) { OfficeVersion = "2010"; return true; } else if (regSubKey2 != null && regSubKey2.GetValue("Path") != null) { OfficeVersion = "2007"; return true; } else if (regSubKey1 != null && regSubKey1.GetValue("Path") != null) { OfficeVersion = "2003"; return true; } else { return false; } } }
通过先访问32位注册表,再访问64位注册表来检测office的版本。
相关文章推荐
- c# 通过查看注册表的方式来判断电脑安装office的版本
- C#通过注册表检测是否安装Office和QQ等软件
- c# 通过查看注册表的方式来判断电脑安装office的版本
- [原创]C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- 检查Office版本工具(通过注册表)
- 注册表检测office版本
- C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码
- C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- 通过注册表检查本地office excel版本
- C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- c#操作进程、服务、注册表(源码测试通过)
- 如何:通过使用 Visual C# 2010 功能访问 Office 互操作对象(C# 编程指南)
- asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)
- C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- 通过注册表来检测是否安装Office
- Java操作excel-兼容office 2007版本之后
- iOS通过iTunes search检测版本更新,并提示用户更新
- C# 怎么通过Iphlpapi.dll 这个API操作路由表
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题