尝试以管理员用户身份访问excel COM对象

时间:2017-06-01 07:58:08

标签: c# excel ms-office comobject

目标是访问计算机中正在运行的Excel工作簿。意图是通过用户打开的这个应用程序关闭相应的工作簿。

已实现:我使用以下代码段访问Excel COM对象

        Excel.Application instance = null;            
        try
        {
            instance = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        }
        catch (Exception ex)//Excel not open
        {
            wasFoundRunning = false;
        }

        if (wasFoundRunning)
        {
            foreach (Excel.Workbook ss in instance.Workbooks)
            {
                string s = ss.Name;                    
            }
        }

问题:以上代码仅适用于机器中同一用户打开的Excel工作表和应用程序。我必须以管理员身份运行应用程序,但它失败了。例外情况如下,这意味着它无法找到任何运行的Excel工作表。

Exception:  Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

如果我将应用程序提升并且用户打开工作表,则会失败。

有任何解决此问题的想法吗?

0 个答案:

没有答案