VBScript を使用した特権操作の実行

WMI 用スクリプト API を使用する場合は、特定のセキュリティ特権を設定できます。 たとえば、オペレーティング システムのシャットダウンを要求したり、セキュリティ イベント ログを調べたりするために、セキュリティ特権を設定できます。 詳細については、「特別な特権を使用して実行する」を参照してください。

特権は、コンピューター上の WMI にアクセスする場合にのみ設定する必要があります。 リモート ホストにアクセスするときは、COM RPC によって特権が自動的に設定されます。 必要なすべての特権を確認するには、アクセスする特定の WMI クラス ( Win32_OperatingSystem など) のドキュメントを参照してください。 詳細については、WbemPrivilegeEnum に関する説明を参照してください。

このトピックでは、次のセクションについて説明します。

Security_ オブジェクトから特権を設定する

Visual Basic でセキュリティ特権を設定するには、次の手順に従います。

Visual Basic で特権を設定するには

  1. SWbemLocator 型のオブジェクトを作成します。

  2. SWbemLocator.Security_ オブジェクトに新しい特権を追加します。

    Security_ オブジェクトには、SWbemObjectSet コレクションが含まれています。 このセット内のオブジェクトは SWbemSecurity オブジェクトです。 詳細については、コレクションへのアクセスに関する記事を参照してください。

  3. WMI にログオンし、SWbemServices オブジェクトを取得します。

    SWbemServices オブジェクトは、前の手順で設定した特権を継承します。

SWbemPrivilegeSet.AddAsString メソッドを使用して特権を設定することもできます。

モニカーの一部として特権を設定する

モニカーの一部として特権を設定できます。

次の例は、モニカーにデバッグ特権を追加する方法を示しています。

Set Service = GetObject("winmgmts:{impersonationLevel=impersonate, (Debug)}")

特権の取り消しとリセット

次の例では、SeDebugPrivilege 特権を設定し、SeRemoteShutdownPrivilege 特権を取り消す方法を示します。

Set Service = GetObject("winmgmts:{impersonate,(Debug,!RemoteShutdown)}")

特権定数

特権操作の実行