网上有很多类似的东西,不过自己试过以后发现好多都不能用,尤其是在win7或者server2008r2下,有一些注册表项不能访问
环境:server2008r2 vs2010 .net fw2.0(因为是小东西,内容比较少,就用2.0框架了)
新建一个项目,界面上放两个Label。
后台代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32; //对注册表操作一定要引用这个命名空间
using System.IO;
namespace CheckOfficeVersion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Excel.exe");
if (rk != null)
{
string path1 = rk.GetValue("Path").ToString();
string path = path1.Substring(0, path1.Length - 1);
string version = path.Substring(path.LastIndexOf("\\") + 1);
label1.Text = "您的Office版本是未知版本。";
label2.Text = "文件路径:" + path1;
switch (version)
{
case "Office11"://检查本机是否安装Office2003
label1.Text = "您的Office版本是2003,Version11.0。";
label2.Text = "文件路径:" + path1;
break;
case "OFFICE11"://检查本机是否安装Office2003
label1.Text = "您的Office版本是2003,Version11.0。";
label2.Text = "文件路径:" + path1;
break;
case "Office12"://检查本机是否安装Office2007
label1.Text = "您的Office版本是2007,Version12.0。";
label2.Text = "文件路径:" + path1;
break;
case "OFFICE12"://检查本机是否安装Office2007
label1.Text = "您的Office版本是2007,Version12.0。";
label2.Text = "文件路径:" + path1;
break;
case "Office14"://检查本机是否安装Office2010
label1.Text = "您的Office版本是2010,Version14.0。";
label2.Text = "文件路径:" + path1;
break;
case "OFFICE14"://检查本机是否安装Office2010
label1.Text = "您的Office版本是2010,Version14.0。";
label2.Text = "文件路径:" + path1;
break;
case "Office15"://检查本机是否安装Office2013
label1.Text = "您的Office版本是2013,Version15.0。";
label2.Text = "文件路径:" + path1;
break;
case "OFFICE15"://检查本机是否安装Office2013
label1.Text = "您的Office版本是2013,Version15.0。";
label2.Text = "文件路径:" + path1;
break;
}
}
else
{
label1.Text = "您的的系统还没有安装Office";
label1.ForeColor = Color.Red;
label2.Visible = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
获取到路径后的版本号的大小写问题没有解决好。
我电脑上装03的时候是全大写的,装10后只是首字母大写。
网上看有一些读注册表用的是这个路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Word\InstallRoot
不过我用它是死活获取不到,应该就是权限的问题,只能获取到14.0这个位置,查了一下子项只有三个,可实际上那下面有十好几个子项
还有,Office下面有可能会有14.0,12.0,11.0等好几个文件夹,所以我只能从上面的代码中的路径获取了