我正在尝试自动化Internet Explorer。 要在系统上运行Internet Explorer,我正在使用此语句
Dim allWindows = New SHDocVw.ShellWindows
从系统上的管理员用户可以正常工作。但是,从非管理员用户运行相同的代码段会引发此异常。
使用CLSID检索组件的COM类工厂 {9BA05972-F6A8-11CF-A442-00A0C90A8F39}由于以下原因而失败 错误:80070005访问被拒绝。 (HRESULT的例外情况:0x80070005 (E_ACCESSDENIED))
所以我想知道获取ShellWindows需要什么样的权限? 或者,如果有一些替代方法来获取没有任何权限限制的ShellWindows?
答案 0 :(得分:0)
此错误是因为UAC权限。应该有管理员权限来获取ShellWindows。 您可以在代码中启用UAC: 在项目中添加app.manifest文件。 修改requestedExecutionLevel标记,如下所示:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
答案 1 :(得分:0)
我自己想出了问题。实际上,这不是由于管理员或非管理员用户。当我们从任何用户登录系统时它工作正常但是它不能运行的情况是
以某个用户身份登录并使用其他用户运行该应用程序 在Windows中运行为选项
然后Windows不允许你获取ShellWindows,由于安全原因,这种行为似乎很好。