C ++:没有用户凭据的Windows日常任务计划

时间:2014-06-21 11:06:33

标签: c++ windows scheduled-tasks

我知道在MSDN上有关于Windows任务调度的大量示例,但它们(登录/启动时间除外)都需要用户凭据才能将任务保存到根文件夹,从而成功注册任务。

//  Save the task in the root folder.
    IRegisteredTask *pRegisteredTask = NULL;
    hr = pRootFolder->RegisterTaskDefinition(
            _bstr_t( wszTaskName ),
            pTask,
            TASK_CREATE_OR_UPDATE, 
            _variant_t(_bstr_t(pszName)), //USERNAME
            _variant_t(_bstr_t(pszPwd)),  //PASSWORD
            TASK_LOGON_PASSWORD,
            _variant_t(L""),
            &pRegisteredTask);

但是我看到一些软件会在用户系统上安排任务而不会提示用户输入凭据。

只是想知道它是如何实现的? Builting//Administrator似乎无法安排日常任务。

另一条出路是什么? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

由于已经超过2周并且没有收到答复,我正在回答我的方法来解决这个问题。

要安排没有用户帐户名和密码的任务,我们可以利用System32目录中的Windows Schtasks.exe

您可以简单地创建您的程序(应该以管理员权限运行)来执行此Schtasks.exe并使用适当的参数来安排每日,每周和每月任务。

例如: 以下命令安排每日任务在HH:mm时运行,并在24小时内每1小时触发一次exe。

Schtasks.exe /CREATE /TN "MyDailyTask" /TR "C:/path/to/trigger/app.exe" /F /SC DAILY /SD mm/dd/yyyy /ST HH:mm /RI 60 /DU 24:00

正如您所看到的,只要我们的应用程序以管理员权限运行,我们就不需要提供用户名和密码。