C#BHO:单击扩展按钮时,打开新的Internet Explorer选项卡

问题描述 投票:0回答:1

[嗨,我正在用C#开发IE的BHO。当用户单击扩展按钮时,我想在新标签页中打开URL。

我正在使用IOleCommandTarget接口方法来捕获单击事件。但是这些方法没有给浏览器提供可用于调用Navigation方法的任何对象。因此,必须尝试其他方法,例如下面提到的方法。

public int QueryStatus(ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText)
        {
            try
            {
                InternetExplorer ie = null;

                SHDocVw.ShellWindows allBrowser = new SHDocVw.ShellWindows();
                int browserCount = allBrowser.Count - 1;

                while (browserCount >= 0)
                {
                    ie = allBrowser.Item(browserCount) as InternetExplorer;

                    if (ie != null && ie.FullName.ToLower().Contains("iexplore.exe"))
                    {
                      ie.Navigate2(SNXFileNames.ActivationPage, 0x1000);
                      break;
                    }

                    browserCount--;
                }            
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            return 0;
        }

此方法可以在开发机中找到,但是在非开发机中却给出拒绝访问错误。

System.UnauthorizedAccessException:由于以下错误,使用CLSID {}检索COM类工厂组件失败:80070005访问被拒绝。

c# internet-explorer-11 bho
1个回答
0
投票

非开发机的OS版本是什么?此错误通常是由您的代码尝试创建的COM组件上的访问设置错误引起的。

您可以尝试启动DCOMCNFG,转到DCOM设置,选择所需的对象,并允许您使用C#代码运行的帐户访问它。

您也可以尝试一般的解决方案:

  1. DCOMCNFG中,右键单击我的电脑,然后选择属性
  2. 选择COM证券选项卡。
  3. 访问权限中,单击编辑默认值并将网络服务添加到其中,并赋予它允许本地访问权限。对 \ Users。
  4. 执行相同的操作
  5. 启动和激活权限中,单击编辑默认值并向其添加网络服务,并为其赋予本地启动本地激活权限。对 \ Users。
  6. 执行相同的操作

参考链接:Retrieving the COM class factory for component failed

© www.soinside.com 2019 - 2024. All rights reserved.