SWbemPrivilegeSet 对象

SWbemPrivilegeSet 对象是 SWbemSecurity 对象中 SWbemPrivilege 对象的集合,它请求 Windows Management Instrumentation (WMI) 对象的特定权限。 请参阅权限常量中的权限列表。 使用 AddAddAsString 方法将项添加到集合中。 使用 Item 方法从集合中检索项,并使用 Remove 方法删除项。 此对象不能由 VBScript CreateObject 方法调用创建。 有关详细信息,请参阅访问集合

SWbemPrivilegeSet 对象是针对特定对象的一组权限覆盖请求。 使用此对象进行 API 调用时,将尝试权限覆盖请求。 SWbemPrivilegeSet 对象不定义当前用户或进程可用的权限。 换句话说,获取任何 WMI 对象的权限不会标识在与 WMI 的连接上进行的权限设置,也不会标识将对象传递到接收器时生效的权限。

成员

SWbemPrivilegeSet 对象具有以下类型的成员:

方法

SWbemPrivilegeSet 对象包含以下方法。

方法 说明
Add 使用 WbemPrivilegeEnum 常量将 SWbemPrivilege 对象添加到 SWbemPrivilegeSet 集合。
AddAsString 使用权限字符串将 SWbemPrivilege 对象添加到 SWbemPrivilegeSet 集合。
DeleteAll 从集合中删除所有权限。
从集合中检索 SWbemPrivilege 对象。 这是此对象的默认方法。
Remove 从集合中删除 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.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemPrivilegeSet
IID
IID_ISWbemPrivilegeSet

另请参阅

执行特权操作

使用 VBScript 执行特权操作

WbemPrivilegeEnum

脚本 API 对象

权限常量