ユーザー アカウント制御と WMI

ユーザー アカウント制御 (UAC) は、コマンドライン ツールから返される WMI データ、リモート アクセス、およびスクリプトの実行方法に影響します。 UAC の詳細については、ユーザー アカウント制御の概要に関するページを参照してください。

次のセクションで、UAC の機能について説明します。

ユーザー アカウント制御

UAC では、ローカルの Administrators グループのアカウントにアクセス トークンが 2 つあり、1 つは標準ユーザー特権、1 つは管理者特権が設定されています。 UAC アクセス トークンのフィルター処理のために、スクリプトは、昇格された特権モードで "Administrator として" 実行される場合を除き、通常は標準ユーザーのトークンで実行されます。 すべてのスクリプトが管理者権限を必要とするわけではありません。

スクリプトは、標準ユーザーのセキュリティ トークンまたは Administrator トークンのどちらで実行されているかをプログラムで判断することができません。 スクリプトがアクセス拒否エラーで失敗する可能性があります。 スクリプトで管理者特権が必要な場合は、管理者特権モードで実行する必要があります。 スクリプトが管理者特権モードで実行されるかどうかによって、WMI 名前空間へのアクセスが異なります。 データの取得やほとんどのメソッドの実行など、一部の WMI 操作では、アカウントは管理者として実行する必要がありません。 既定のアクセス許可の詳細については、「WMI 名前空間へのアクセス」と「特権操作の実行」を参照してください。

ユーザー アカウント制御のために、管理者特権で実行するには、スクリプトを実行するアカウントが、ローカル コンピューターの Administrators グループに属している必要があります。

次のいずれかの方法を実行して、管理者特権でスクリプトまたはアプリケーションを実行できます。

管理者特権モードでスクリプトを実行するには、次のようにします

  1. [スタート] メニューで [コマンド プロンプト] を右クリックし、[管理者として実行] をクリックして、[コマンド プロンプト] ウィンドウを開きます。
  2. タスク スケジューラを使用して、管理者特権で実行するようにスクリプトをスケジュールします。 詳細については、タスクを実行するためのセキュリティ コンテキストに関するページを参照してください。
  3. あらかじめ登録された Administrator アカウントを使用してスクリプトを実行します。

WMI Command-Line ツールの実行に必要なアカウント

次の WMI Command-Line ツールを実行するには、ご自分のアカウントが Administrators グループに属し、ツールを管理者特権でのコマンド プロンプトから実行する必要があります。 あらかじめ登録された Administrator アカウントでも、これらのツールを実行できます。

  • mofcomp

  • wmic

    システムのインストール後に初めて Wmic を実行する場合は、管理者特権のコマンド プロンプトから実行する必要があります。 WMI 操作で管理者特権が必要な場合を除き、その後の Wmic 実行に管理者特権モードは必要ない可能性があります。

  • winmgmt

  • wmiadap

WMI コントロール (Wmimgmt.msc) を実行し、WMI 名前空間のセキュリティまたは監査の設定を変更するには、ご自分のアカウントにセキュリティの編集権限が明示的に付与されているか、ローカルの Administrators グループに属している必要があります。 あらかじめ登録された Administrator アカウントでも、名前空間のセキュリティまたは監査を変更できます。

Microsoft カスタマーサポート サービスでサポートされていないコマンドライン ツールである wbemtest.exe は、特定の操作で、Administrator アカウントに通常付与される特権が必要な場合を除き、ローカルの Administrators グループに属していないアカウントで実行できます。

UAC でのリモート接続の処理

ドメインまたはワークグループ内のリモート コンピューターに接続しているかどうかによって、UAC フィルター処理が行われるかどうかが決まります。

お使いのコンピューターがドメインの一部である場合は、リモート コンピューターのローカルの Administrators グループに属しているドメイン アカウントを使用してターゲット コンピューターに接続します。 その後、UAC アクセス トークンのフィルター処理は、ローカルの Administrators グループのドメイン アカウントに影響しなくなります。 アカウントが Administrators グループに属している場合でも、リモート コンピューターでローカルのドメイン以外のアカウントを使用しないでください。

ワークグループでは、リモート コンピューターに接続するアカウントは、そのコンピューター上のローカル ユーザーです。 アカウントが Administrators グループに属していても、UAC フィルター処理により、スクリプトが標準ユーザーとして実行されるということです。 ベスト プラクティスは、ターゲット コンピューターでリモート接続専用のローカル ユーザー グループまたはユーザー アカウントを作成することです。

アカウントに管理者権限がないため、このアカウントを使用できるようにセキュリティを調整する必要があります。 ローカル ユーザーに以下を付与します。

  • DCOM にアクセスするためのリモート起動とアクティブ化の権限。 詳細については、「リモート コンピューター上の WMI への接続」を参照してください。
  • WMI 名前空間にリモートでアクセスする権限 (リモート有効化)。 詳細については、「WMI 名前空間へのアクセス」を参照してください。
  • オブジェクトに必要なセキュリティに応じて、特定のセキュリティ保護可能なオブジェクトにアクセスする権限。

ワークグループに属しているか、ローカル コンピューター アカウントであるためにローカル アカウントを使用する場合、特定のタスクをローカル ユーザーに与えることを余儀なくされることがあります。 たとえば、SC.exe コマンド、Win32_ServiceGetSecurityDescriptor および SetSecurityDescriptor メソッド、または Gpedit.msc によるグループ ポリシーを通して特定のサービスを停止または開始する権限をユーザーに付与できます。 セキュリティ保護可能なオブジェクトによっては、標準ユーザーがタスクを実行できず、既定のセキュリティを変更する手段が提供されない場合があります。 この場合、ローカル ユーザー アカウントがフィルター処理されず、代わりに完全な権限を持つ管理者になるように、UAC の無効化が必要になる場合があります。 セキュリティ上の理由から、UAC の無効化は最終手段にすべきであることに注意してください。

リモート UAC を制御するレジストリ エントリを変更してリモート UAC を無効にするのはお勧めできませんが、ワークグループで必要になる場合があります。 レジストリ エントリは HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy です。 このエントリの値がゼロ (0) のとき、リモート UAC アクセス トークンのフィルター処理が有効です。 値が 1 のとき、リモート UAC は無効です。

スクリプトまたはアプリケーションに返される WMI データに対する UAC の影響

スクリプトまたはアプリケーションが Administrators グループのアカウントで実行されてはいるが、昇格された特権で実行されていない場合、このアカウントは標準ユーザーとして実行されているため、返されるすべてのデータを取得できない可能性があります。 一部のクラスの WMI "プロバイダー" では、UAC フィルター処理のために、標準ユーザー アカウント、または完全な権限を持つ管理者として実行されていない Administrator アカウントには、すべてのインスタンスが返されません。

アカウントが UAC でフィルター処理されている場合、次のクラスでは、一部のインスタンスが返されません。

アカウントが UAC でフィルター処理されている場合、次のクラスでは、一部のプロパティが返されません。

WMI について

WMI セキュリティ保護可能オブジェクトへのアクセス

セキュリティ保護可能なオブジェクトのアクセス セキュリティの変更