SWbemPrivilegeSet オブジェクト
SWbemPrivilegeSet オブジェクトは、Windows Management Instrumentation (WMI) オブジェクトの特定の特権を要求する SWbemSecurity オブジェクト内の SWbemPrivilege オブジェクトのコレクションです。 「特権定数」で、特権の一覧をご確認ください。 項目は、Add と AddAsString メソッドを使用してコレクションに追加されます。 項目は Item メソッドを使用してコレクションから取得され、Remove メソッドを使用して削除されます。 このオブジェクトは、VBScript の CreateObject メソッドでは作成できません。 詳細については、コレクションへのアクセスに関する記事を参照してください。
SWbemPrivilegeSet オブジェクトは、特定のオブジェクトに対する一連の特権オーバーライド要求です。 このオブジェクトを使用して API 呼び出しが行われると、特権オーバーライド要求が試行されます。 SWbemPrivilegeSet オブジェクトは、現在のユーザーまたはプロセスが使用できる特権を定義しません。 言い換えると、WMI オブジェクトの特権を取得しても、WMI への接続で行われる特権設定や、オブジェクトがシンクに配信されるときに有効な特権は指定されません。
メンバー
SWbemPrivilegeSet オブジェクトには、次の種類のメンバーがあります。
メソッド
SWbemPrivilegeSet オブジェクトには、次のメソッドがあります。
メソッド | 説明 |
---|---|
追加 |
WbemPrivilegeEnum 定数を使用して、SWbemPrivilegeSet コレクションに SWbemPrivilege オブジェクトを追加します。 |
AddAsString | 特権文字列を使用して、SWbemPrivilegeSet コレクションに SWbemPrivilege オブジェクトを追加します。 |
DeleteAll | コレクションからすべての特権を削除します。 |
Item | コレクションから SWbemPrivilege オブジェクトを取得します。 これは、このオブジェクトの既定のメソッドです。 |
[削除] | コレクションから SWbemPrivilege オブジェクトを削除します。 |
プロパティ
SWbemPrivilegeSet オブジェクトには、次のプロパティがあります。
プロパティ | アクセスの種類 | 説明 |
---|---|---|
Count |
読み取り専用 |
コレクション内の項目数。 |
例
次の VBScript コード例は、SWbemPrivileges オブジェクトを取得し、WbemPrivilegeEnum での定義どおりに、特権値によって使用可能なすべての特権をコレクションに追加します。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" _
& strComputer & "\root\cimv2")
set colPrivileges = objWMIService.Security_.Privileges
For I = 1 To 27
colPrivileges.Add(I)
Next
' Display information about each privilege
For Each objItem In colPrivileges
wscript.echo objItem.Identifier & vbtab & objItem.Name _
& vbtab & objItem.Displayname _
& vbtab & "Enabled = " & objItem.IsEnabled
Next
次の VBScript コード例は、SWbemPrivilegeSet オブジェクトを使用して特権を追加する方法を示しています。
on error resume next
const wbemPrivilegeSecurity = 8
const wbemPrivilegeDebug = 20
set locator = CreateObject("WbemScripting.SWbemLocator")
' Add a single privilege using SWbemPrivilegeSet.Add
locator.Security_.Privileges.Add wbemPrivilegeSecurity
Set Privilege = locator.Security_.Privileges(wbemPrivilegeSecurity)
WScript.Echo Privilege.Name
' Attempt to add an illegal privilege using SWbemPrivilegeSet.Add
locator.Security_.Privileges.Add 6535
if err <> 0 then
WScript.Echo "0x" & Hex(Err.Number), Err.Description, Err.Source
err.clear
end if
locator.Security_.Privileges.Add wbemPrivilegeDebug
locator.Security_.Privileges(wbemPrivilegeDebug).IsEnabled = false
' Add a single privilege using SWbemPrivilegeSet.AddAsString
Set Privilege = locator.Security_.Privileges.AddAsString ("SeChangeNotifyPrivilege")
WScript.Echo Privilege.Name
' Attempt to add an illegal privilege using SWbemPrivilegeSet.AddAsString
locator.Security_.Privileges.AddAsString "SeChungeNotifyPrivilege"
if err <> 0 then
WScript.Echo "0x" & Hex(Err.Number), Err.Description, Err.Source
err.clear
end if
WScript.Echo ""
for each Privilege in locator.Security_.Privileges
WScript.Echo "[" & Privilege.DisplayName & "]", Privilege.Identifier, Privilege.Name, Privilege.IsEnabled
next
if err <> 0 then
WScript.Echo Err.Number, Err.Description, Err.Source
end if
次の Perl コード例は、SWbemPrivilegeSet オブジェクトを使用して特権を追加する方法を示しています。
use strict;
use Win32::OLE;
close(STDERR);
my ($locator, $Privilege);
my $wbemPrivilegeSecurity = 8;
my $wbemPrivilegeDebug = 20;
eval { $locator = new Win32::OLE 'WbemScripting.SWbemLocator';};
if (!$@ && defined $locator)
{
# Add a single privilege using SWbemPrivilegeSet.Add
$locator->{Security_}->{Privileges}->Add($wbemPrivilegeSecurity);
$Privilege = $locator->{Security_}->Privileges($wbemPrivilegeSecurity);
print "\n", $Privilege->{Name}, "\n\n";
# Attempt to add an illegal privilege using SWbemPrivilegeSet.Add
eval { $locator->{Security_}->{Privileges}->Add(6535); };
print Win32::OLE->LastError, "\n" if ($@ || Win32::OLE->LastError);
$locator->{Security_}->{Privileges}->Add($wbemPrivilegeDebug);
$locator->{Security_}->Privileges($wbemPrivilegeDebug)->{IsEnabled} = 0;
# Add a single privilege using SWbemPrivilegeSet.AddAsString
$Privilege = $locator->{Security_}->{Privileges}->AddAsString ("SeChangeNotifyPrivilege");
print "\n", $Privilege->{Name}, "\n\n";
# Attempt to add an illegal privilege using SWbemPrivilegeSet.AddAsString
eval {$locator->{Security_}->{Privileges}->AddAsString ("SeChungeNotifyPrivilege"); };
print Win32::OLE->LastError, "\n" if ($@ || Win32::OLE->LastError);
print "\n";
foreach $Privilege (in {$locator->{Security_}->{Privileges}})
{
printf "[%s] %d %s %d \n" , $Privilege->{DisplayName}, $Privilege->{Identifier}, $Privilege->{Name}, $Privilege->{IsEnabled};
}
}
else
{
print Win32::OLE->LastError, "\n";
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemPrivilegeSet |
IID |
IID_ISWbemPrivilegeSet |