次の方法で共有


IScheduledWorkItem::SetAccountInformation メソッド (mstask.h)

[[この API は、以降のバージョンのオペレーティング システムまたは製品で変更または使用できない場合があります。 代わりに 、タスク スケジューラ 2.0 インターフェイス を使用してください。 ]

作業項目の実行に使用するアカウント名とパスワードを設定します。

構文

HRESULT SetAccountInformation(
  [in] LPCWSTR pwszAccountName,
  [in] LPCWSTR pwszPassword
);

パラメーター

[in] pwszAccountName

作業項目を実行するユーザー アカウントの null で終わる名前を含む文字列。 ローカル システム アカウントを指定するには、空の文字列 L"" を使用します。 他の文字列を使用してローカル システム アカウントを指定しないでください。 詳細については、「解説」を参照してください。

[in] pwszPassword

pwszAccountName で指定されたアカウントのパスワードを含む文字列。

ローカル システム アカウントが指定されている場合は、このパラメーターを NULL に 設定します。 TASK_FLAG_RUN_ONLY_IF_LOGGED_ON フラグを設定した場合は、ローカル またはドメイン ユーザー アカウント の pwszPasswordを NULL に設定することもできます。 フラグを設定するには、 IScheduledWorkItem::SetFlags メソッドを使用します。

タスク スケジューラは、同じアカウントを使用するすべてのタスクのアカウント情報を 1 回だけ格納します。 1 つのタスクのアカウント パスワードが更新された場合、その同じアカウントを使用するすべてのタスクで、更新されたパスワードが使用されます。

パスワードの使用が完了したら、 SecureZeroMemory 関数を呼び出してパスワード情報をクリアします。 パスワードの保護の詳細については、「パスワードの 処理」を参照してください。

戻り値

SetAccountInformation メソッドは、次のいずれかの値を返します。 この呼び出しのエラーは、 後続の IPersistFile::Save の呼び出しによっても返される可能性があることに注意してください。

リターン コード 説明
S_OK
操作に成功しました。
E_ACCESSDENIED
呼び出し元には、操作を実行するためのアクセス許可がありません。 詳細については、「解説」を参照してください。
E_INVALIDARG
引数が無効です。
E_OUTOFMEMORY
メモリが不足しています。
SCHED_E_NO_SECURITY_SERVICES
セキュリティ サービスは、Windows Server 2003、Windows XP、Windows 2000 でのみ使用できます。
SCHED_E_UNSUPPORTED_ACCOUNT_OPTION
pwszPassword パラメーターは NULL に設定されましたが、TASK_FLAG_RUN_ONLY_IF_LOGGED_ON フラグは設定されませんでした。
SCHED_E_ACCOUNT_INFORMATION_NOT_SET
pwszPassword パラメーターが正しくありません。 Windows Server 2003 では、タスク スケジューラはジョブの作成時 ( IPersistFile::Save の呼び出し中) にパスワードを検証します。 このエラーが発生した場合でも、ジョブ ファイルは作成されることに注意してください。

注釈

この方法は、Windows Server 2003、Windows XP、および Windows 2000 用です。

pwszAccountName でローカル システム アカウントが指定されている場合、呼び出し元はローカル コンピューターの管理者であるか、ローカル システム アカウントで実行されているアプリケーションである必要があります。 そうでない場合、このメソッドは失敗します。

pwszPassword で指定されたパスワードは、作業項目の実行時にアカウントにログオンするために使用されます。 パスワードが正しくないと、作業項目の実行時にエラーが発生します。 ただし、Windows Server 2003 では、タスク スケジューラはジョブの作成時 ( IPersistFile::Save の呼び出し中) にパスワードを検証します。

通常、パスワードには有効期限があります。 無期限に実行されるタスクをスケジュールする場合は、新しいパスワードを反映するようにタスクを更新する必要があります。

エラーは、 SetAccountInformation の最初の呼び出しまたは 後続の IPersistFile::Save の呼び出しによって返される可能性があることに注意してください。

この呼び出しを成功させるには、タスク スケジューラ サービスが実行されている必要があります。 (SetAccountInformation では、タスク スケジューラ サービスへのリモート プロシージャ コール (RPC) が発生しますが、 IPersistFile::Save が呼び出されるまで RPC 呼び出しは行われません)。

E_ACCESSDENIED戻りコードは、次の条件で返されます。

  • 呼び出し元は、スケジュールされた作業項目を表すファイルへの書き込みアクセス権を持っていません。
  • ローカル アカウントが指定されました (pwszAccountName が L""に設定されました)、呼び出し元はローカル コンピューターの管理者でも、ローカル システム アカウントで実行されているアプリケーションでもありません。
  • pwszPasswordNULL パスワードが指定されましたが、呼び出し元はローカル コンピューターの管理者でも、ローカル システム アカウントでも実行されません。
  • アプリケーションは、 pwszAccountName パラメーターで指定されたという名前のユーザーとは異なるユーザー名で実行されています。
作業項目のアカウント情報を設定したら、 必ず IPersistFile::Save を呼び出して、変更した作業項目オブジェクトをディスクに保存してください。

タスクのアカウント情報を設定する方法の詳細と例については、「 C/C++ コード例: タスク アカウント情報の設定」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mstask.h
Library Mstask.lib
[DLL] Mstask.dll

こちらもご覧ください

IScheduledWorkItem

IScheduledWorkItem::GetAccountInformation

IScheduledWorkItem::SetFlags