この記事では、Microsoft Windows Server 2003 ベースのコンピューターでバッチ ジョブを実行するときに発生するエラー (Access が拒否される) の解決策について説明します。
適用対象: Windows Server 2003
元の KB 番号: 867466
症状
通常のユーザー アカウントのコンテキストで実行されるバッチ ジョブを実行すると、スクリプトが実行されないことがあります。 スケジュールされたタスク機能を使用してバッチ ジョブを実行すると、スケジュールされたタスク ログ ファイル (Schedlgu.txt) に次のエラー メッセージが記録されることがあります。
0x80070005: アクセスが拒否されました。
デバッガー プログラムを使用してバッチ ジョブが動作しない理由を特定しようとすると、デバッグ出力に次のエラー メッセージが表示されることがあります。
アクセスが拒否されました (エラー 5)
原因
この問題は、次のすべての条件に該当する場合に発生します。
- Windows Server 2003 ベースのメンバー サーバーでバッチ ジョブを実行します。
- バッチ ジョブは非対話型プロセスとして実行されます。
- バッチ ジョブは、Administrators グループのメンバーではないアカウントのコンテキストで実行するように構成されています。
Windows Server 2003 では、ユーザー グループにはコマンド プロセッサ (Cmd.exe) に対する読み取りと実行のアクセス許可がありません。 既定では、Cmd.exe プログラムには次のアクセス許可設定があります。
対話型の暗黙的なグループとサービスの暗黙的なグループには、読み取りと実行のアクセス許可があります。
注意
メンバー サーバーでは、TelnetClients グループにも読み取りと実行のアクセス許可があります。 ドメイン コントローラーでは、Batch 暗黙的グループにも読み取りと実行のアクセス許可があります。
管理者グループとシステムの暗黙的なグループには、フル コントロールのアクセス許可があります。
この問題を解決するには、次のいずれかの方法を使用します。
解決策 1: Cmd.exe読み取りと実行のアクセス許可を付与する
Cmd.exe プログラムに、バッチ ジョブを実行するユーザー アカウントの読み取りと実行のアクセス許可を付与します。 これを行うには、次の手順を実行します。
[ Start] をクリックし、[Windows エクスプローラー ] をクリック。
Cmd.exe ファイルを見つけて右クリックします。 Cmd.exe ファイルは %windir%\System32 フォルダーにあります。
[プロパティ] をクリックします。
[セキュリティ] タブをクリックします。
追加をクリックします。
[ 選択するオブジェクト名を入力 ボックスに、バッチ ジョブを実行するユーザー名を入力し、[ OK を 2 回クリックします。
注意
ユーザーを追加すると、読み取りと実行のアクセス許可がユーザーに自動的に付与されます。
続行を求められたら、[ Yes をクリックします。
解決策 2: Cmd.exe ファイルの読み取りと実行のアクセス許可を Batch グループに付与する
Cmd.exe ファイルの読み取りと実行のアクセス許可を Batch グループに付与します。 これにより、すべてのバッチ プロセスでコマンド プロセッサを実行できます。 これを行うには、次の手順を実行します。
- [ Start] をクリックし、[Windows エクスプローラー ] をクリック。
- Cmd.exe ファイルを見つけて右クリックします。 Cmd.exe ファイルは %windir%\System32 フォルダーにあります。
- [プロパティ] をクリックします。
- [セキュリティ] タブをクリックします。
- 追加をクリックします。
- [ 選択するオブジェクト名を入力 ボックスに「 Batch」と入力し、[ OK] をクリック 2 回クリックします。
- 続行を求められたら、[ Yes をクリックします。
詳細
この記事で説明する動作は、Microsoft Windows 2000 Server の既定の動作とは異なります。 既定では、Windows 2000 Server は、ユーザー グループに対する読み取りアクセス許可と実行アクセス許可を付与します。
暗黙的なグループの詳細については、次の Microsoft Web サイトを参照してください。