无需用户凭证的Windows每日任务计划

C++: Windows daily task schedule without user credentials

本文关键字:每日 任务 计划 Windows 用户 凭证      更新时间:2023-10-16

我知道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的事情似乎不工作安排日常任务。

另一条出路是什么?

由于已经超过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

正如你所看到的,我们不需要提供用户名和密码,只要我们的应用程序以admin权限运行