来自管理员 Python window、create/attach COM objects 作为用户

From an Administrator Python window, create/attach COM objects as a user

我必须 运行 python 作为管理员才能使用 pywinauto 访问 WPF 应用程序。 WPF 应用程序将数据导出到 excel sheet,它保存到硬盘驱动器上的缓存目录并打开。

这在我的管理员 python 解释器中失败了。它创建了一个新的 excel 进程,即使我正在尝试连接到已经打开的进程。它在常规 non-admin python 解释器中工作正常 window:

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

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

我目前丑陋的解决方案是使用 Pywinauto 以 excel window 为目标,将标题保存到变量,杀死 window 然后使用来自管理员的调度 window 到 re-open 文件并执行我的 com 操作。这很浪费,但它完成了工作。

好的,我知道发生了什么事。在测试期间,我关闭了一些 windows WPF 应用程序并手动重新打开它们。

当我用我的管理员 python window 打开 WPF 时,我正在制作管理员 WPF window 生成管理员级别 excel 工作表。

当我手动启动 WPF windows 时,我正在创建用户级 WPF windows,它生成了用户级 excel 工作表。

管理员python无法COM用户级别excel张

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

因此,只要我从我的管理 python 会话启动所有 WPF windows,我就可以按照我想要的方式使用 COM。