向 ShellWindows 添加事件处理程序时出现 HRESULT 0x80040202

HRESULT 0x80040202 when adding an event Handler to ShellWindows

我正在尝试建立一个在后台运行在一堆远程计算机上的服务,该服务将简单地监控 IE 的使用次数以用于统计目的。我的大部分代码都已编写,并且在我的开发计算机上运行得非常好,它与远程计算机具有相同的规格。我还确保远程计算机都安装了 Net Framework 4.5.1。

启动服务时,我收到此错误消息(我记录了它)

System.Runtime.InteropServices.COMException (0x80040202): Exception HRESULT : 0x80040202
at System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(Object pUnkSink, Int32& pdwCookie)
at System.Runtime.InteropServices.ComEventsSink.Advise(Object rcw)
at System.Runtime.InteropServices.ComEventsInfo.AddSink(Guid& iid)
at System.Runtime.InteropServices.ComEventsHelper.Combine(Object rcw, Guid iid, Int32 dispid, Delegate d)
at System.Runtime.InteropServices.ComAwareEventInfo.AddEventHandler(Object target, Delegate handler)
at ServiceLogger.Service1..ctor()

这是导致这个错误的代码,它发生在我的服务是由program.cs创建的时候,我没有修改program.cs。

InitializeComponent();
shellWindows = new SHDocVw.ShellWindows(); //Global var
shellWindows.WindowRegistered += shellWindows_WindowRegistered; <-- This is the error

我在 google 上搜索了一整天,似乎没有人遇到这个问题,而且它只发生在远程计算机上。这些计算机配置中是否存在导致此问题的内容? shdocvw 库有问题吗?

原来是 Internet Explorer 本身的问题。

我们想阻止用户在那些计算机上做很多事情,我们对 IE 摆弄得太多了,不得不安装一个特殊版本来阻止很多事情。

我重建了机器,测试了服务,它工作正常。