Windows Server 2003 ベースのコンピューターでバッチ ジョブを実行すると、アクセスが拒否される

この記事では、Microsoft Windows Server 2003 ベースのコンピューターでバッチ ジョブを実行するときに発生するエラー (アクセスが拒否される) の解決策について説明します。

適用対象: Windows Server 2003
元の KB 番号: 867466

現象

通常のユーザー アカウントのコンテキストで実行されるバッチ ジョブを実行すると、スクリプトが実行されないことがあります。 スケジュールされたタスク機能を使用してバッチ ジョブを実行すると、スケジュールされたタスク ログ ファイル (Schedlgu.txt) に次のエラー メッセージが記録されることがあります。

0x80070005: アクセスが拒否されます。

デバッガー プログラムを使用してバッチ ジョブが動作しない理由を判断しようとすると、デバッグ出力に次のエラー メッセージが表示されることがあります。

アクセスが拒否されました (エラー 5)

原因

この問題は、次の条件がすべて満たされている場合に発生します。

  • Windows Server 2003 ベースのメンバー サーバーでバッチ ジョブを実行します。
  • バッチ ジョブは、非対話型プロセスとして実行されます。
  • バッチ ジョブは、Administrators グループのメンバーではないアカウントのコンテキストで実行するように構成されます。

Windows Server 2003 では、[ユーザー] グループにコマンド プロセッサ (Cmd.exe) に対する読み取りと実行のアクセス許可がありません。 既定では、Cmd.exe プログラムには次のアクセス許可設定があります。

  • 対話型の暗黙的なグループとサービスの暗黙的なグループには、読み取りと実行のアクセス許可があります。

    注:

    メンバー サーバーでは、TelnetClients グループにも読み取りと実行のアクセス許可があります。 ドメイン コントローラーでは、Batch 暗黙的なグループにも読み取りと実行のアクセス許可があります。

  • Administrators グループとシステム暗黙的グループには、フル コントロールのアクセス許可があります。

この問題を解決するには、次のいずれかの方法を使用します。

解決策 1: Cmd.exe の読み取りと実行のアクセス許可を付与する

バッチ ジョブが実行されているユーザー アカウントの読み取りおよび実行のアクセス許可を Cmd.exe プログラムに付与します。 これを行うには、次の手順を実行します。

  1. [スタート] をクリックし、[Windows エクスプローラー] をクリックします。

  2. Cmd.exe ファイルを見つけて右クリックします。 Cmd.exe ファイルは %windir%\System32 フォルダーにあります。

  3. [プロパティ] をクリックします。

  4. [セキュリティ] タブをクリックします。

  5. [追加] をクリックします。

  6. [ 選択するオブジェクト名を入力 します] ボックスに、バッチ ジョブが実行するユーザー名を入力し、[OK] を 2 回クリック します

    注:

    ユーザーを追加すると、ユーザーには読み取りと実行のアクセス許可が自動的に付与されます。

  7. 続行するように求められたら、[ はい ] をクリックします。

解決策 2: Cmd.exe ファイルの読み取りと実行のアクセス許可を Batch グループに付与する

Cmd.exe ファイルの読み取りと実行のアクセス許可を Batch グループに付与します。 これにより、すべてのバッチ プロセスでコマンド プロセッサを実行できます。 これを行うには、次の手順を実行します。

  1. [スタート] をクリックし、[Windows エクスプローラー] をクリックします。
  2. Cmd.exe ファイルを見つけて右クリックします。 Cmd.exe ファイルは %windir%\System32 フォルダーにあります。
  3. [プロパティ] をクリックします。
  4. [セキュリティ] タブをクリックします。
  5. [追加] をクリックします。
  6. [ 選択するオブジェクト名を入力します ] ボックスに「 Batch」と入力し、[OK] を 2 回クリック します
  7. 続行するように求められたら、[ はい ] をクリックします。

詳細

この記事で説明する動作は、Microsoft Windows 2000 Server の既定の動作とは異なります。 既定では、Windows 2000 Server は、ユーザー グループに対して読み取りアクセス許可と実行アクセス許可を付与します。

暗黙的なグループの詳細については、次の Microsoft Web サイトを参照してください。