ユーザー名、パスワード設定なしでタスクを登録するためにNetScheduleJobAdd
を使用したいのですが、戻り値が
87 The parameter is incorrect. ERROR_INVALID_PARAMETER
です。何が悪いのでしょうか。
#include lmcons.h
#include Lmat.h
#include Lm.h
int i;
char cBuf[_MAX_PATH];
DWORD id;
WCHAR lBuf[_MAX_PATH];
unsigned char aaa;
aaa = '\0';
strcpy(cBuf,c:\\AAA.EXE);
AT_INFO sAt;
sAt.JobTime = (DWORD)(1*3600+11*60)*1000;
sAt.DaysOfMonth = (DWORD)0;
sAt.DaysOfWeek = aaa;
sAt.Flags = JOB_RUN_PERIODICALLY;
i = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, cBuf, strlen(cBuf),
lBuf, sizeof(WCHAR)*_MAX_PATH);
sAt.Command = lBuf;
i = NetScheduleJobAdd((LPCWSTR)NULL, (LPBYTE)&sAt, (LPDWORD)&id);
> sAt.Flags = JOB_RUN_PERIODICALLY;
定期的に実行すると言いつつ、
> sAt.DaysOfMonth = (DWORD)0;
> sAt.DaysOfWeek = aaa;
実行する月日が全て0です。
どのようなスケジュールにしたいのでしょう?
とりあえず毎日1時11分です。
毎日と言うことでしたら、全部のビットを1にしておけば良いのでは。
解決しました。
DaysOfMonthとDaysOfWeekはいろいろ変えてやってみたのですが、
戻り値は87のままでした。
根本原因はMultiByteToWideCharで変換後の変数の文字列が\0で
終端されてないことでした。第4引数を-1にしたら直りました。