1
我嘗試下面的代碼刪除計劃任務刪除計劃任務:使用COM對象
bool deleteTask(std::wstring taskName)
{
if (FAILED(CoInitialize(nullptr))) {
return false;
}
ITaskScheduler *pITS;
if (FAILED(CoCreateInstance(CLSID_CTaskScheduler, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **)&pITS))) {
CoUninitialize();
return false;
}
HRESULT hr = pITS->Delete(taskName.c_str());
pITS->Release();
CoUninitialize();
if (FAILED(hr)) {
if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) {
wprintf(L"ERROR_FILE_NOT_FOUND");
}
return false;
}
return true;
}
執行deleteTask(L"exampletask");
pITS->Delete
返回ERROR_FILE_NOT_FOUND
即使執行schtasks.exe /Query /TN exampletask
返回現有任務的方法時。
我也用admin/system/service的權限試過這段代碼,沒有找到並刪除任務。
是否有一些缺失的參數,或者應該調用的方法?
謝謝!
或許不會直接相關,但對[ITaskScheduler ::刪除](https://msdn.microsoft.com/en-us/library/windows/desktop/aa381820.aspx)的文件中讀取:*」此API可能會在後續版本的操作系統或產品中被更改或無法使用。請使用[Task Scheduler 2.0 Interfaces](https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa383600.aspx )。* – IInspectable
推測,您需要指定任務的完整路徑,其中命令行工具隱含任務根文件夾(如果缺失)。你可以嘗試調用'deleteTask(L「\\ exampletask」);'而不是。更多信息和示例代碼可從[ITaskFolder](https://msdn.microsoft.com/en-us/library/windows/desktop/aa381330.aspx)文檔獲得。 – IInspectable