task scheduler启动不了_Task Scheduler

  1. 前言 - taskscheduler 说明

  2. Task Scheduler 1.0 的相关操作

  3. Task Scheduler 2.0 的相关操作

  4. Task Scheduler 接口抽象了解 ITaskService 对象

此对象需要依赖 TaskshdWindows 服务,如果此服务被关闭,那么此 COM 对象也将会失效。有关这个 COM 对象在 MSDN 里也有详细提及,想要查看官方的在线连接,点击这里。

对于 TaskScheduler 2.0 的操作,开发通常包括以下常见步骤:

  1. 调用
    CoInitialize()
    来初始化 COM,代码片段如下所示:
CoInitialize(NULL);
  1. 调用
    CoInitializeSecurity()
    来设置进程安全,避免被杀毒软件误报。代码如下所示:
CoInitializeSecurity(
    NULL,
    -1,
    NULL,
    NULL,
    RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
    RPC_C_IMP_LEVEL_IMPERSONATE,
    NULL,
    0,
    NULL
);
  1. 使用
    CoCreateInstance()
    函数来初始化一个
    ITaskService
    对象。代码片段如下所示:
ITaskService *m_pService = NULL;
CoCreateInstance(CLSID_TaskScheduler,
                 NULL,
                 CLSCTX_INPROC_SERVER,
                 IID_ITaskService,
                 (void **)&m_pService);
  1. 在 Task Scheduler 2.0 中,与 1.0 不同的是需要通过
    ITaskService
    对象的
    Connect()
    方法来连接到对应的 Windows 服务程序。代码片段如下所示:
m_pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());
  1. 调用
    ITaskService
    对象中提供的各种操作方法,来执行相应的操作。如下图所示:

  1. 操作完成后,调用
    CoUninitialize()
    来释放 COM。在此之前,需要对各个 COM 对象(如
    ITaskService
    等)执行
    Release()
    函数进行内存释放。如果使用了智能指针来管理这些对象,那么可以省略这一步(^__^)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://www./link/3ff55afdf16fea13cf00f29dddc53948 原文链接:https://www./link/c8377ad2a50fb65de28b11cfc628d75c