VBScript を使用した特権操作の実行
WMI 用スクリプト API を使用する場合は、特定のセキュリティ特権を設定できます。 たとえば、オペレーティング システムのシャットダウンを要求したり、セキュリティ イベント ログを調べたりするために、セキュリティ特権を設定できます。 詳細については、「特別な特権を使用して実行する」を参照してください。
特権は、コンピューター上の WMI にアクセスする場合にのみ設定する必要があります。 リモート ホストにアクセスするときは、COM RPC によって特権が自動的に設定されます。 必要なすべての特権を確認するには、アクセスする特定の WMI クラス ( Win32_OperatingSystem など) のドキュメントを参照してください。 詳細については、WbemPrivilegeEnum に関する説明を参照してください。
このトピックでは、次のセクションについて説明します。
Security_ オブジェクトから特権を設定する
Visual Basic でセキュリティ特権を設定するには、次の手順に従います。
Visual Basic で特権を設定するには
SWbemLocator 型のオブジェクトを作成します。
SWbemLocator.Security_ オブジェクトに新しい特権を追加します。
Security_ オブジェクトには、SWbemObjectSet コレクションが含まれています。 このセット内のオブジェクトは SWbemSecurity オブジェクトです。 詳細については、コレクションへのアクセスに関する記事を参照してください。
WMI にログオンし、SWbemServices オブジェクトを取得します。
SWbemServices オブジェクトは、前の手順で設定した特権を継承します。
SWbemPrivilegeSet.AddAsString メソッドを使用して特権を設定することもできます。
モニカーの一部として特権を設定する
モニカーの一部として特権を設定できます。
次の例は、モニカーにデバッグ特権を追加する方法を示しています。
Set Service = GetObject("winmgmts:{impersonationLevel=impersonate, (Debug)}")
特権の取り消しとリセット
次の例では、SeDebugPrivilege 特権を設定し、SeRemoteShutdownPrivilege 特権を取り消す方法を示します。
Set Service = GetObject("winmgmts:{impersonate,(Debug,!RemoteShutdown)}")
関連トピック