所有,
我在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。
我认为它必须是权限问题,但我无法弄清楚如何修复它。有什么想法吗?
感谢。
答案 0 :(得分:1)
我怀疑这与访问桌面有关。 由于shdocvw具有UI,因此需要获得桌面句柄的权限。当它创建一个窗口时,它必须有一个父窗口,而桌面窗口句柄是王(或女王)。
但是,除非用户已在前台登录,否则计划任务(对任何用户)都无法获取桌面句柄。