如何以编程方式获取已安装的Excel.exe的路径?

时间:2014-06-19 15:39:24

标签: c# .net vb.net windows process

有什么方法可以找到在C#或VB.Net中检索Excel可执行文件路径的方法吗?我知道下面这两个选项,但不幸的是它们不合适。如果您有其他选择,请建议。

  1. 使用注册表
  2. 使用Process.Start("Excel")并从Excel流程获取路径
  3. 无法使用注册表选项,因为没有足够权限的人可能正在使用我的应用程序,因此我们想要远离。如果这个假设是错误的并且Registry对任何级别的用户访问权限都是可靠的,请告诉我。

    使用第二个选项,我看到Excel进程正在打开,如果有可以启动的方式,但没有Excel进程对用户显示,这可能会有效。

3 个答案:

答案 0 :(得分:1)

您可以隐藏它并将其关闭。您必须包含以下代码的互操作服务

    Dim xl As Excel.Application = New Excel.Application
    xl.Visible = False
    Dim Excel_Path As String = xl.Path()
    xl.Quit()

答案 1 :(得分:1)

我最终得到了这个逻辑,它符合我的目的。如果Excel是一个正在运行的进程,那么我将从那里获取路径,如果不是我通过创建实例来获取,该实例实际上并未显示Excel UI,而是在后台运行。

            string path = string.Empty;

            Process[] processlist = Process.GetProcesses();
            foreach (Process theprocess in processlist)
            {
                if (theprocess.ProcessName == "EXCEL")
                {
                    path = theprocess.MainModule.FileName;
                    break;
                }
            }

            if (path == string.Empty)
            {
                Type officeType = Type.GetTypeFromProgID("Excel.Application");
                dynamic xlApp = Activator.CreateInstance(officeType);
                xlApp.Visible = false;
                path = xlApp.Path + @"\Excel.exe";
                xlApp.Quit();
            }

答案 2 :(得分:0)

检查此link

您可以隐藏启动过程,因此用户将看不到窗口

startInfo.WindowStyle = ProcessWindowStyle.Hidden;