SWbemPrivilegeSet 物件

SWbemPrivilegeSet 物件是 SWbemSecurity物件中 SWbemPrivilege物件的集合,該物件會要求 Windows Management Instrumentation (WMI) 物件的特定許可權。 請參閱 許可權常數中的許可權清單。 使用 AddAddAsString 方法,將專案加入至集合。 專案是使用 Item 方法從集合中取出,並使用 Remove 方法移除。 VBScript CreateObject 方法呼叫無法建立這個物件。 如需詳細資訊,請參閱 存取集合

SWbemPrivilegeSet 物件是特定物件的一組許可權覆寫要求。 使用這個物件進行 API 呼叫時,會嘗試許可權覆寫要求。 SWbemPrivilegeSet 物件不會定義目前使用者或進程可用的許可權。 換句話說,取得任何 WMI 物件的許可權,並不會識別連接至 WMI 時所進行的許可權設定,或是將物件傳遞到接收時的作用中許可權。

成員

SWbemPrivilegeSet 物件具有下列類型的成員:

方法

SWbemPrivilegeSet 物件有這些方法。

方法 描述
添加 使用 WbemPrivilegeEnum常數,將 SWbemPrivilege物件加入至 SWbemPrivilegeSet 集合。
AddAsString 使用許可權字串,將 SWbemPrivilege 物件加入至 SWbemPrivilegeSet 集合。
DeleteAll 從集合中刪除擁有權限。
項目 從集合中捕獲 SWbemPrivilege 物件。 這是這個物件的預設方法。
移除 從集合中移除 SWbemPrivilege 物件。

屬性

SWbemPrivilegeSet 物件具有這些屬性。

屬性 存取類型 描述
計數
唯讀
集合中的項目數目

範例

下列 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
標頭
>Wbemdisp.tlb。h
類型程式庫
>Wbemdisp.tlb .tlb
DLL
Wbemdisp.dll
CLSID
CLSID _ SWbemPrivilegeSet
IID
IID _ ISWbemPrivilegeSet

另請參閱

執行具有特殊許可權的作業

使用 VBScript 執行特殊許可權作業

WbemPrivilegeEnum

腳本 API 物件

許可權常數