在C#2.0中使用SHDocVw.InternetExplorer时出错

时间:2013-08-14 14:43:51

标签: c# internet-explorer shdocvw

所有,

我在C#2.0中有这样的代码:

 SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
 foreach (SHDocVw.InternetExplorer ie in shellWindows)
 {
  //.........
 }

对于带有sp1,IE9的64位Windows Server 2008 R2 Standard,它是控制台exe。 基本上它启动IE并下载文件,然后处理该文件。 当我手动运行它时,例如双击或从命令控制台运行它,它工作得很好。但是,当我通过任务计划程序设置计划任务时,它会在上面的第一行抛出错误:

检索具有CLSID {9BA05972-F6A8-11CF-A442-00A0C90A8F39}的组件的COM类工厂因以下错误而失败:8000401a。

我认为它必须是权限问题,但我无法弄清楚如何修复它。有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我怀疑这与访问桌面有关。 由于shdocvw具有UI,因此需要获得桌面句柄的权限。当它创建一个窗口时,它必须有一个父窗口,而桌面窗口句柄是王(或女王)。

但是,除非用户已在前台登录,否则计划任务(对任何用户)都无法获取桌面句柄。

相关问题