从非admin用户获取shell窗口会抛出访问被拒绝异常HRESULT: 0x80070005 (E_ACCESSDEN

本文关键字:HRESULT 异常 拒绝 0x80070005 ACCESSDEN 访问 获取 用户 admin shell 窗口 | 更新日期: 2023-09-27 18:11:09

我正在尝试自动化Internet Explorer。为了处理在系统上运行Internet Explorer,我使用以下语句

 Dim allWindows = New SHDocVw.ShellWindows

系统上的管理员用户可以正常工作。但是从非admin用户运行相同的代码段会抛出此异常。

使用CLSID为组件检索COM类工厂{9BA05972-F6A8-11CF-A442-00A0C90A8F39}由于以下原因失败错误:80070005访问被拒绝。HRESULT异常:0x80070005(E_ACCESSDENIED))

所以我想知道什么样的特权需要获取ShellWindows?或者如果有一些替代方法来获取ShellWindows没有任何特权限制?

从非admin用户获取shell窗口会抛出访问被拒绝异常HRESULT: 0x80070005 (E_ACCESSDEN

此错误是由于UAC权限。一个人应该有管理员权限来获取ShellWindows。你可以在你的代码中启用UAC:在项目中添加app.manifest文件。修改requestdexecutionlevel标签如下:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

我自己解决了这个问题。实际上,这与管理员或非管理员用户无关。当我们从任何用户登录系统时它都能正常运行但当

无法运行时

以某个用户登录,并从另一个用户使用

那么windows将不允许您获取ShellWindows,由于安全原因,这种行为似乎很好。