在Administrator Python窗口中,以用户身份创建/附加COM对象

时间:2018-07-30 01:31:19

标签: python pywin32 win32com

我必须以管理员身份运行python才能使用pywinauto访问WPF应用程序。 WPF应用程序将数据导出到excel工作表中,然后保存到硬盘驱动器的缓存目录中并打开。

这在我的管理python解释器中失败。即使我尝试连接到已经打开的程序,它也会创建一个新的excel程序。可以在常规的非管理员python解释器窗口中正常工作:

import win32com
xlApp=Dispatch.GetActiveObject("Excel.Application")
xl.quit()

如何从管理员级别的python解释器在用户级别使用win32com?还是我该如何解决这个问题?

我当前的丑陋解决方案是使用Pywinauto定位excel窗口,将标题保存到变量,杀死该窗口,然后使用管理窗口中的dispatch重新打开文件并执行com操作。这很浪费,但可以完成工作。

1 个答案:

答案 0 :(得分:0)

好吧,我知道发生了什么事。在测试期间,我关闭了WPF应用程序的某些窗口,然后手动重新打开了它们。

当我使用管理python窗口打开WPF时,我正在创建管理WPF窗口,该窗口产生了管理级别的excel工作表。

当我手动启动WPF窗口时,我正在创建USER级别的WPF窗口,这些窗口会生成USER级别的excel工作表。

管理员python无法COM用户级别的Excel工作表

用户python无法COM管理员级别的Excel工作表。

只要我从admin python会话中启动所有WPF窗口,我就可以按照自己的方式使用COM。