我正在使用在 Windows Server 2008 系统上运行的 TaskService(COM 任务调度程序 1.1 类型库的互操作)类远程连接到另一个 Windows 服务器系统上的任务调度程序。相关代码片段如下:
var ts = new TaskService(IP address, userId, domain, password);
foreach (Task task in ts.RootFolder.Tasks)
{
Console.Writeline(task.Definition.Principal.UserId);
}
当目标是 Windows 2008 和 Windows 7 时,这很有效,但是对于 Windows server 2012 和 Windows 8,我得到以下 COM 异常:
“任务 XML 包含格式不正确或超出范围的值。(HRESULT 异常:0x80041318)”
我检查了上面返回的 Task 的 Xml 属性。我看到的唯一区别是 Windows 2012 的 Task version=\"1.4\",但远程系统为 Windows 2008 或 Windows 7 时 Task version=\"1.3\" 或更低。"
属性访问器 task.Definition 抛出异常:
System.Runtime.InteropServices.COMException (0x80041318): The task XML contains
a value which is incorrectly formatted or out of range. (Exception from HRESULT:
0x80041318)
at TaskScheduler.IRegisteredTask.get_Definition()
ITaskSchedulerService 接口使用 XML 来定义任务。在 Windows 8 和 Windows 2012 中,他们使用新的任务计划程序远程协议(1.4 版),它与使用 1.2-1.3 版的最旧的 Windows 操作系统不兼容。
有没有办法从 Windows 2008 系统远程定位 Win 2012 或 Win8 任务计划程序?