getactiveObject命令失败窗户8和窗10

问题描述 投票:1回答:2

下面我有,下面的PowerShell代码我已经编译成可执行文件(.exe),并打包成SCCM推挤几个100个用户。我已经安装了SCCM包为运行“安装的用户”,而不是作为一个管理员。该包成功捕获与Windows 7的用户数据,但已安装的Windows 8/10任何用户无法捕捉到我所需要的数据。

我做了一个try / catch语句,并得到这个错误 - “

异常调用 “GetActiveObject” 与 “1” 的说法(S): “操作不可用(从HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))”

我试图理解为什么完全相同的代码工作完全在Windows 7的机器,但在Windows 8/10不起作用。有没有解决?我想避免使用“新对象-ComObject‘Outlook.Application’”因为我不想在后台创建一个新的Outlook程序(腐败用户运行Outlook会话的恐惧)。我需要运行PowerShell代码捕捉活动运行Outlook进程。请帮忙。谢谢

$mail = [Runtime.Interopservices.Marshal]::GetActiveObject('Outlook.Application') 

$name = $mail.Application.DefaultProfileName

$name的输出被本地存储到一个日志文本文件。

c# powershell outlook outlook-vba sccm
2个回答
0
投票

我正经历着类似的症状。我不知道如果这是你确切的问题,但也许我的解决方案将帮助别人谁碰到这个问题绊倒。

下面MS KB article提到,直到应用程序失去焦点(这显然是“行为设计”)Office应用程序没有注册自己的ROT。如果应用程序没有在ROT注册,GetActiveObject将返回指示的错误。

对我来说,剧本是在Windows 7中,工作可靠,但它只是有时工作在Windows 8出于某种原因,也许是涉及到Office的各个版本安装不同版本的Internet Explorer(这是我用来启动Office应用程序)或许变为Windows本身,我经历了当我手动点击在我的Windows 8测试的办公室应用专注于Windows 8的行为不同的默认窗口,脚本开始工作。

为了解决这个问题,我只是插入一个电话使GetActiveObject通话,这使得运行在Windows 8完全可靠之前focus the Office application window


0
投票

确保Outlook和您的应用程序在相同的安全上下文中运行 - 无论是这两个应用与提升的权限(“以管理员身份运行”),或者两者都不应用程序正在运行作为管理员运行。

© www.soinside.com 2019 - 2024. All rights reserved.