Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

タスク = タスク・スケジューラ = Windowsサービスのため

「タスク・スケジューラもWindowsサービス」です。

Windowsサービス全般の実行アカウント問題を中心としたトラブルシュートについて説明します。

アカウント関係

runasコマンド実行アカウントを指定する(アンマッチ)

runasコマンドで一時的にほかのユーザー権限でプログラムを実行する事ができますが、
コマンドからパスワードは与えられず、ユーザに入力を求めるダイアログが表示されますので
非対話型のセッションから実行されるWindowsサービスやタスク スケジューラではアンマッチです。

タスク スケジューラの実行アカウントを指定する

タスク スケジューラの機能を使用する

以下のKBにあるように、タスク スケジューラは実行アカウントを指定して実行させる事ができます。

コマンドからは以下の様に設定します。

タスクスケジューラに特権を付与する

こちらを参照して下さい。

タスクスケジューラからUIをコントロールする場合、

バックグラウンドからのUIオートメーションはサポートされない。
従って、以下のように設定をして、フォアグラウンドで実行できるようにする。

参考:

Windowsサービスの実行アカウントを指定する

IISやSQL Serverなど

IIS(のワーカ・プロセス)やSQL Serverなど、
専用の設定画面を持ち、ここから設定が可能です。

Windows Server 2003Windows Vista
Windows Server 2008
Windows 7/Vista sp2
Windows Server 2008 R2
既定の匿名ユーザーIDIUSR_<マシン名>IUSRIUSR
既定のワーカープロセスIDNETWORK SERVICENETWORK SERVICEアプリケーション プール ID
仮想アカウント
ワーカープロセスグループIIS_WPGIIS_IUSRSIIS_IUSRS

ASP.NET(偽装)

ASP.NETでは、偽装を使用する事によって、
実行アカウントを指定することもできます。

ASP.NET アプリケーションに偽装を実装する方法
http://support.microsoft.com/kb/306158/ja

偽装には、

があります。

匿名アカウントを実行アカウントにする場合は偽装が必要になります。
通常は、IIS(のワーカ・プロセス)の実行アカウントで実行される。

APIを使用した偽装

ASP.NETのように、偽装の機能が実装されているWindowsサービスも有りますが、
Win32APIを使用して偽装することもできます(区間的、部分的な偽装)。

偽装スレッドからEXEを起動

また、ASP.NETなどの偽装スレッドからEXE起動をした場合、
EXEが偽装スレッドの実行アカウントで実行されない問題があります。

偽装スレッドの実行アカウントでEXEを起動する場合は、
DuplicateTokenEx?CreateProcessAsUser?関数を使用し、
独自に、ユーザ権限を割り当てる必要があるようです。

以下の点に注意が必要のようです。

実行アカウントの確認方法

.NET

以下を参照下さい。

権限

UAC

UACの問題で動かないようなケースもパニックです。

Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする - @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/859disuac/disuac.html

UACとは、Windows Vista以降のOSに実装されている
ユーザー・アカウント制御(User Account Control)を指す。

タスク スケジューラとUAC

タスクのセキュリティ コンテキスト
http://technet.microsoft.com/ja-jp/library/cc722152.aspx

タスク スケジューラのセキュリティ コンテキストに対して Administrators グループを使用してタスクが登録されている場合、
タスクを実行するには、[最上位の特権で実行する] チェック ボックスがオンになっていることも確認する必要があります。

JP1の場合

JP1/Automatic Job Management System 3 構築ガイド1
6.2.22 UAC機能有効時にAdministrators権限でジョブを実行するための設定
http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0532/AJSX0072.HTM

WindowsのUAC機能を有効にしていると,ビルトインAdministratorを除く,すべての
AdministratorsグループのOSユーザーは,Administrators権限が無効な状態で動作します。
JP1/AJS3では,Administrators権限を必要とするジョブ※が実行できなくなる場合があります。
・・・
「UAC機能有効時にAdministrators権限でジョブを実行するための設定」を有効
にすることによって,UAC機能が有効の場合でもAdministratorsグループの
OSユーザーでAdministrators権限が必要なジョブを実行できます。

ネットワークアクセス

ネットワーク経由で、ファイル共有やプリンタにアクセスする場合。

サービスで使用されるビルトイン システム アカウントの問題

一般的に匿名アクセスを許可する以外、

ネットワーク間の認証には

を使用する必要があります。

リモート・コマンド

リモート・コマンドを実行する場合、
リモートでコマンドを実行する際の
実行アカウントを考慮する必要があります。

RSH

rshsvc.exeは、渡されたシェルを実行しますが、シェルの実行アカウントは、
サービスで使用されるビルトイン システム アカウントであるLocal Systemとなるようです。

WinRM

WinRMサービスは、渡されたPowerShellを実行しますが、PowerShellの実行アカウントは、
サービスで使用されるビルトイン システム アカウントであるNetwork Serviceとなるようです。

しかし、WinRMサービスは実行時にCredentialを渡す事で実行アカウントを指定でき、
また、色々設定を行う事によってWinRMではダブルホップも可能であるようです。

PsExec?

RSH(rshsvcサービス)など、上記の実行アカウントで
実行できないコマンドをリモート実行したい場合、PsExec?が利用できる。

参考情報

ローカルの実行アカウントを引き継いでリモートアクセスする場合に知っておきたい
「ダブルホップ」については「ベース クライアント セキュリティ モデル」→「委任」を参照。

帳票印刷

Windowsサービスやタスク スケジューラで
帳票ツールを使用しないで印刷を行う推奨された方式はない。

選択肢

帳票ツール

OSS

Excel帳票

その他

その他

非対話型プロセス

Windowsサービスやタスク スケジューラからの
UIを伴うWindowsアプリケーションの起動は推奨されない。

以下のフォーラムのスレッドでは、
非対話型プロセスで偽装ユーザを
対話ウインドウステーションに追加する方法を説明している。

ユーザ・プロファイル

ユーザ・プロファイルが無い場合にエラーとなるようなAPIは使用する事ができません。
この場合、必要に応じてユーザ・プロファイルをロードする必要があるようです。

該当する処理

以下の様な処理が該当します。

処理の例

ネットワーク ドライブの接続および切断を例にとると、

例えば、net use(WNetAddConnection?)
を使用してネットワーク・アクセスをすると、

Windowsの

といったデバイスへのマッピングを覚えます。

しかし、これは、情報をプロファイルに覚えるので、
対話型ユーザでログオンしている必要があるようです。

Windowsサービスやタスク スケジューラの処理が、

ユーザ・プロファイルが存在しない実行カウントのコンテキスト上で実行される場合、

必要に応じてユーザ・プロファイルをロードします。
こちらを参照ください。

サービスで使用されるビルトイン システム アカウントで実行

サービスで使用されるビルトイン システム アカウントでプログラムを実行しようとしても、
runasコマンドにはサービスで使用されるビルトイン システム アカウントを指定きません。

この場合、「System」(LocalSystem?)であれば、
タスク スケジューラが既定で、「System」(LocalSystem?)の
サービスで使用されるビルトイン システム アカウントを使用する性質を利用できます。

Office サーバー サイド オートメーション

Office オートメーションをタスクスケジューラから実行しようとした場合に、

Office サーバー サイド オートメーション

の問題に合致するケースがあり得るので注意する必要があります。

タスク・スケジューラの設定

設定可能な項目

参考情報

.batはcmd.exeを経由します。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS