C# 获取外壳程序窗口会从非管理员用户引发访问被拒绝异常HRESULT:0x80070005(E_ACCESSDENIED)
我正在尝试将Internet Explorer自动化。 要在系统上运行Internet Explorer,我使用以下语句C# 获取外壳程序窗口会从非管理员用户引发访问被拒绝异常HRESULT:0x80070005(E_ACCESSDENIED),c#,.net,vb.net,internet-explorer,windows-applications,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的例外情况:0x
Dim allWindows = New SHDocVw.ShellWindows
它可以从系统上的管理员用户处正常工作。但是从非管理员用户运行相同的代码段会引发此异常
正在检索具有CLSID的组件的COM类工厂
{9BA05972-F6A8-11CF-A442-00A0C90A8F39}由于以下原因失败
错误:80070005访问被拒绝。(HRESULT的例外情况:0x80070005
(E_)(拒绝)
所以我想知道获取ShellWindows需要什么样的特权?
或者如果有其他方法可以在没有任何权限限制的情况下获取ShellWindows?此错误是因为UAC权限。您应该具有获取ShellWindows的管理员权限。 您可以在代码中启用UAC,如下所示: 在项目中添加app.manifest文件。 修改requestedExecutionLevel标记,如下所示:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
我自己解决了这个问题。事实上,这不是由于管理员或非管理员用户。当我们从任何用户登录到系统时,它工作正常,但无法运行的情况是 以某个用户身份登录,并使用从另一个用户运行应用程序 windows中的“运行方式”选项
然后windows将不允许您获取ShellWindows,由于安全原因,这种行为似乎没有问题。我的应用程序不需要管理员权限。乍一看,我认为问题是由于非管理员用户造成的,但事实并非如此,而是由于以用户身份运行。