SWbemPrivilegeSet 对象
SWbemPrivilegeSet 对象是 SWbemSecurity 对象中 SWbemPrivilege 对象的集合,它请求 Windows Management Instrumentation (WMI) 对象的特定权限。 请参阅权限常量中的权限列表。 使用 Add 和 AddAsString 方法将项添加到集合中。 使用 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 |
标头 |
|
类型库 |
|
DLL |
|
CLSID |
CLSID_SWbemPrivilegeSet |
IID |
IID_ISWbemPrivilegeSet |