繁体   English   中英

从非管理员用户获取外壳程序窗口会引发访问被拒绝的异常HRESULT:0x80070005(E_ACCESSDENIED)

[英]Fetching shell windows throws access denied exception HRESULT: 0x80070005 (E_ACCESSDENIED) from non-admin user

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

 Dim allWindows = New SHDocVw.ShellWindows

从系统上的管理员用户可以正常工作。 但是,如果非管理员用户运行相同的代码段,则会引发此异常。

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

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

此错误是因为UAC权限。 一个应该具有管理员权限才能获取ShellWindows。 您可以通过以下方式在代码中启用UAC:在项目中添加app.manifest文件。 修改requiredExecutionLevel标记,如下所示:

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

我自己解决了这个问题。 实际上,这不是由于管理员或非管理员用户引起的。 当我们从任何用户登录到系统时,它都可以正常运行,但无法运行的情况是

以某些用户身份登录,并使用Windows中的“运行方式”选项从其他用户运行应用程序

然后Windows将不允许您获取ShellWindows,并且由于安全原因,此行为似乎还不错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM