0

全部,

我在 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。

我认为这一定是权限问题,但我不知道如何解决它。有任何想法吗?

谢谢。

4

1 回答 1

1

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

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

于 2013-09-06T20:14:58.157 回答