调用失败 ITaskScheduler::Activate
Failed calling ITaskScheduler::Activate
我想获取 Windows 计划任务信息。我从 MSDN source.
复制了这段代码
///////////////////////////////////////////////////////////////////
// Call ITaskScheduler::Activate to get the Task object.
///////////////////////////////////////////////////////////////////
ITask *pITask;
LPCWSTR lpcwszTaskName;
lpcwszTaskName = L"Test Task";
hr = pITS->Activate(lpcwszTaskName,
IID_ITask,
(IUnknown**) &pITask);
pITS->Release();
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskScheduler::Activate; error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
它在我的 Win10 X64 计算机上运行良好。但它在另一台 Win7 X86 计算机上失败。
当我使用 Remote Debugger 时,错误代码是 0x80070002
。 VS 调试器告诉我这意味着 ERROR_FILE_NOT_FOUND
。但是我去定义ERROR_FILE_NOT_FOUND
#define ERROR_FILE_NOT_FOUND 2L
代码不同。
而当我运行程序直接在Win7 x86电脑上。它给了我另一个错误代码
0x8007007b
找不到意思。
所以不知道为什么在Win7电脑上调用失败
0x80070002
等于HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
,所以和ERROR_FILE_NOT_FOUND
意思一样。
0x8007007b
等于 HRESULT_FROM_WIN32(ERROR_INVALID_NAME)
.
所以这两个错误代码似乎都表明您要查找的任务不存在。
将来,当您看到以 0x8
开头的错误代码时,它很可能是 HRESULT
值。按照维基百科的描述剖析 HRESULT
代码给出:
- 位
0x80000000
表示失败
- 我们的设施值为 7 (
(hr & 0x07FF0000 ) >> 16
),这意味着 Win32 错误
- 低 16 位(在这些情况下为
hr & 0xFFFF
-> 0x0002
和 0x007b
)是您可以在 reference 中查找的实际错误值。
Firegiant 提供 nice web service 用于直接查找 HRESULT
值和其他类型的错误代码。
我想获取 Windows 计划任务信息。我从 MSDN source.
复制了这段代码///////////////////////////////////////////////////////////////////
// Call ITaskScheduler::Activate to get the Task object.
///////////////////////////////////////////////////////////////////
ITask *pITask;
LPCWSTR lpcwszTaskName;
lpcwszTaskName = L"Test Task";
hr = pITS->Activate(lpcwszTaskName,
IID_ITask,
(IUnknown**) &pITask);
pITS->Release();
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskScheduler::Activate; error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
它在我的 Win10 X64 计算机上运行良好。但它在另一台 Win7 X86 计算机上失败。
当我使用 Remote Debugger 时,错误代码是 0x80070002
。 VS 调试器告诉我这意味着 ERROR_FILE_NOT_FOUND
。但是我去定义ERROR_FILE_NOT_FOUND
#define ERROR_FILE_NOT_FOUND 2L
代码不同。
而当我运行程序直接在Win7 x86电脑上。它给了我另一个错误代码
0x8007007b
找不到意思。 所以不知道为什么在Win7电脑上调用失败
0x80070002
等于HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
,所以和ERROR_FILE_NOT_FOUND
意思一样。
0x8007007b
等于 HRESULT_FROM_WIN32(ERROR_INVALID_NAME)
.
所以这两个错误代码似乎都表明您要查找的任务不存在。
将来,当您看到以 0x8
开头的错误代码时,它很可能是 HRESULT
值。按照维基百科的描述剖析 HRESULT
代码给出:
- 位
0x80000000
表示失败 - 我们的设施值为 7 (
(hr & 0x07FF0000 ) >> 16
),这意味着 Win32 错误 - 低 16 位(在这些情况下为
hr & 0xFFFF
->0x0002
和0x007b
)是您可以在 reference 中查找的实际错误值。
Firegiant 提供 nice web service 用于直接查找 HRESULT
值和其他类型的错误代码。