C#通过操作注册表检测office版本
来源:互联网 发布:孤寡老人数据 编辑:程序博客网 时间:2024/05/17 00:08
在编写毕业论文辅助编辑软件时,需要检测用户是否安装office以及office的版本,后来在网上找到通过注册表检测的方法,不过由于Windows32位软件和64位软件操作的注册表是不同的,关于这个问题,可以看我转载的博客C#32位程序与64位程序读\写注册表的区别
由于毕业论文辅助编辑软件是一款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的版本。
0 0
- C#通过操作注册表检测office版本
- 通过注册表检查本地office excel版本
- 检查Office版本工具(通过注册表)
- C#通过注册表检测是否安装Office和QQ等软件
- c# 通过查看注册表的方式来判断电脑安装office的版本
- c# 通过查看注册表的方式来判断电脑安装office的版本
- VC检测Office版本
- C#操作word的版本问题(读注册表+反射)
- c#操作进程、服务、注册表(源码测试通过)
- 通过jacob操作office
- C# OFFICE操作
- C# 操作office文件
- C#操作Office杂谈
- c#操作Office
- C# NPOI操作Office
- C# 操作office
- C#操作注册表
- C#操作注册表
- C++11: std::threads managed by a designated class
- django 多数据库
- 具有结构系统化的 js在线浅明学习文档
- 光纤收发器的介绍
- Redis 使用java操作
- C#通过操作注册表检测office版本
- 干货|可视化设计:百度地图路线
- JS笔记01-基础
- TYPESDK手游聚合SDK客户端设计思路与架构之一:设计需求分析
- 线程池-ExecutorService
- 《登天的感觉》读后感与摘录
- OpenGl的学习计划
- Redis 详解,基本方法使用
- ubuntu 下github使用(简要过程)