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

use*_*870 2 .net c# vb.net windows process

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

  1. 使用注册表
  2. 使用Process.Start("Excel")Excel 进程并获取路径

无法使用注册表选项,因为没有足够权限的人可能正在使用我的应用程序,因此我们想远离。如果这种假设是错误的,并且注册表对于任何级别的用户访问权限都是可靠的,请告诉我。

使用第二个选项,我看到 Excel 进程正在打开,如果有一种方法可以启动,但根本不让 Excel 进程向用户显示,这可能会起作用。

use*_*870 5

我最终得出了这个逻辑,它达到了我的目的。如果 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();
            }
Run Code Online (Sandbox Code Playgroud)