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

时间:2015-09-03 07:26:47

标签: c# .net vb.net internet-explorer windows-applications

我正在尝试自动化Internet Explorer。 要在系统上运行Internet Explorer,我正在使用此语句

 Dim allWindows = New SHDocVw.ShellWindows

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

  

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

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

2 个答案:

答案 0 :(得分:0)

此错误是因为UAC权限。应该有管理员权限来获取ShellWindows。 您可以在代码中启用UAC: 在项目中添加app.manifest文件。 修改requestedExecutionLevel标记,如下所示:

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

答案 1 :(得分:0)

我自己想出了问题。实际上,这不是由于管理员或非管理员用户。当我们从任何用户登录系统时它工作正常但是它不能运行的情况是

  

以某个用户身份登录并使用其他用户运行该应用程序   在Windows中运行为选项

然后Windows不允许你获取ShellWindows,由于安全原因,这种行为似乎很好。