获得提升的excel过程

前几天,我不得不使用ProcessStartInfo以当前用户权限运行Excel,以便用户使用一些需要pipe理员权限或当前用户权限的插件。

new Process{ StartInfo = new ProcessStartInfo{ Verb = "runas", FileName = @"path/to/app.exe", Arguments = "-officeexcel", Domain = domain, UserName = login, Password = pa ss, UseShellExecute = false, } }.Start(); 

因此,我不能再使用了:

 Marshal.GetActiveObject("Excel.Application") 

得到excel实例。 所以我试图使用AccessibleObjectFromWindow()的后期绑定:

 int hwnd = (int)FindWindow("XLMAIN", null); if (hwnd != 0) { int hwndChild = 0; EnumChildCallback cb = new EnumChildCallback(EnumChildProc); EnumChildWindows(hwnd, cb, ref hwndChild); if (hwndChild != 0) { const uint OBJID_NATIVEOM = 0xFFFFFFF0; Guid IID_IDispatch = new Guid("{00020400-0000-0000-C000-000000000046}"); ExcelWindow ptr; int hr = AccessibleObjectFromWindow(hwndChild, OBJID_NATIVEOM, IID_IDispatch.ToByteArray(), out ptr); if (hr >= 0) { using (UILanguageHelper fix = new UILanguageHelper()) { return (Excel.Application)ptr.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, ptr, null); } } } } return null; 

它的工作,但我得到的Excel应用程序有零属性,我不能调用任何方法! 获得提升的Excel实例后,我需要运行一些macros!

我做错了什么 ?