C# 检查已安装的Excel版本并启动它 我在我的应用程序中尝试用特定的参数来启动微软Excel(即附加的XLA和XLL)。
目前它运行良好,因为我所有的用户只安装了Office11(=2003) 我的公司将切换到Windows 7和Office 2010,从逻辑上讲,我无法启动任何excel,因为.exe不在C# 检查已安装的Excel版本并启动它 我在我的应用程序中尝试用特定的参数来启动微软Excel(即附加的XLA和XLL)。,c#,excel,registry,ms-office,C#,Excel,Registry,Ms Office,目前它运行良好,因为我所有的用户只安装了Office11(=2003) 我的公司将切换到Windows 7和Office 2010,从逻辑上讲,我无法启动任何excel,因为.exe不在C:\Program Files:\Microsoft Office\Office11\excel.exe 我在注册表中运行了一个快速检查,以查看是否可以明确检查当前安装的版本。还有很多文章解释如何获取当前安装的Office版本 但是,我想知道是否有可能找到任何直接给我.exe路径的东西(比如一个好的注册表项),
C:\Program Files:\Microsoft Office\Office11\excel.exe
我在注册表中运行了一个快速检查,以查看是否可以明确检查当前安装的版本。还有很多文章解释如何获取当前安装的Office版本
但是,我想知道是否有可能找到任何直接给我.exe路径的东西(比如一个好的注册表项),以便启动Excel
使用我当前的计算机(Win XP x86,Office11),我可以在HKEY\U LOCAL\U machine\SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot
使用这个键,我基本上可以找到一个解决方法来获得实际的路径。问题:安装了Office 2010(=Office 14)的Windows 7注册表中没有此项
你们知道从C#启动当前安装的excel的方法吗
仅供参考,以下是当前代码部分,从x64/x86计算机启动Office11:
private void LaunchExcel(string arguments)
{
if (!Is64BitsOS())
{
Process process = new Process();
process.StartInfo.FileName = "excel";
process.StartInfo.Arguments = arguments;
process.Start();
}
else
{
Process process = new Process();
process.StartInfo.FileName = "c:/Program Files (x86)/Microsoft Office/Office11/excel.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.Arguments = arguments;
process.Start();
}
}
有什么办法使此代码更通用吗?如果启动Excel以打开Excel文件,则可以启动一个
过程,将Excel文件设置为文件名
,并让Windows shell完成查找关联应用程序的所有工作。显然,您需要一个异常处理程序
这将使您独立于Office和Windows版本以及注册表项
否则,您可以采用不同的方法查找关联的应用程序,如
这些建议的要点是:目前,您必须在安装新的Office版本或使用不同的Windows版本后立即更改代码,同时有办法避免这些依赖关系。在64位版本的Windows(XPx64、Vistax64、Win7x64)上运行的32位版本Excel 2010将具有以下密钥。
我想这就是你要找的钥匙
HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Excel\InstallRoot
在64位版本的Windows(XPx64、Vistax64、Win7x64)上运行的64位版本的Excel 2010将具有以下键
HKLM\SOFTWARE\Microsoft\Office\14.0\Excel\InstallRoot
复制自是否也有办法获取版本号(在您的示例中为14.0
)?