怎么C#获取office 的版本区分出是office 2003还是office 2007

suifeng0117 2010-10-18 05:53:42
我想通过程序获得office的版本,请问哪位大哥会,给段代码呗!!
...全文
630 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhwangke 2010-11-10
  • 打赏
  • 举报
回复
1楼的方法很好 如果客户用的是绿色的版的这个方法就没用了
水哥阿乐 2010-10-18
  • 打赏
  • 举报
回复
读注册可能是最直接的方法吧
HKEY_LOCAL_MACHINE/Software/Microsoft/Office/11.0/Excel/InstallRoot/
wuyq11 2010-10-18
  • 打赏
  • 举报
回复
excelApp = new Excel.Application();
excelApp.Version
HKEY_LOCAL_MACHINE/Software/Microsoft/Office/11.0/Excel/InstallRoot/
yirenwang 2010-10-18
  • 打赏
  • 举报
回复
http://hi.baidu.com/goga/blog/item/cc8e242d915e423c359bf730.html
Fibona 2010-10-18
  • 打赏
  • 举报
回复
/// <summary>
/// 获取当前某个版本Office的安装路径
/// </summary>
/// <param name="Path">返回当前系统Office安装路径</param>
/// <param name="Version">返回当前系统Office版本信息</param>
public static void GetOfficePath(out string Path,out string Version)
{
string strPathResult = "";
string strVersionResult = "";
string strKeyName = "Path";
object objResult = null;
Microsoft.Win32.RegistryValueKind regValueKind;
Microsoft.Win32.RegistryKey regKey = null;
Microsoft.Win32.RegistryKey regSubKey = null;

try
{
regKey = Microsoft.Win32.Registry.LocalMachine;

if (regSubKey == null)
{//office97
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\8.0\Common\InstallRoot", false);
strVersionResult = "office97";
strKeyName = "OfficeBin";
}

if (regSubKey == null)
{//Office2000
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\9.0\Common\InstallRoot", false);
strVersionResult = "office2000";
strKeyName = "Path";
}

if (regSubKey == null)
{//officeXp
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot", false);
strVersionResult = "officeXP";
strKeyName = "Path";
}

if (regSubKey == null)
{//Office2003
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", false);
strVersionResult = "office2003";
strKeyName = "Path";
}

if (regSubKey == null)
{//office2007
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot", false);
strVersionResult = "office2007";
strKeyName = "Path";
}

objResult = regSubKey.GetValue(strKeyName);
regValueKind = regSubKey.GetValueKind(strKeyName);
if (regValueKind == Microsoft.Win32.RegistryValueKind.String)
{
strPathResult = objResult.ToString();
}
}
catch (System.Security.SecurityException ex)
{
throw new System.Security.SecurityException("您没有读取注册表的权限", ex);
}
catch (Exception ex)
{
throw new Exception("读取注册表出错!", ex);
}
finally
{

if (regKey != null)
{
regKey.Close();
regKey = null;
}

if (regSubKey != null)
{
regSubKey.Close();
regSubKey = null;
}
}

Path = strPathResult;
Version = strVersionResult;
}

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧