Объект SWbemPrivilegeSet

Объект SWbemPrivilegeSet — это коллекция объектов SWbemPrivilege в объекте SWbemSecurity, который запрашивает определенные привилегии для объекта инструментария управления Windows (WMI). См. список привилегий в константах привилегий. Элементы добавляются в коллекцию с помощью методов Add и AddAsString . Элементы извлекаются из коллекции с помощью метода Item и удаляются с помощью метода Remove . Этот объект нельзя создать с помощью вызова метода CreateObject VBScript . Дополнительные сведения см. в разделе "Доступ к коллекции".

Объект SWbemPrivilegeSet — это набор запросов на переопределение привилегий для определенного объекта. При вызове API с помощью этого объекта предпринимается попытка переопределения привилегий. Объект SWbemPrivilegeSet не определяет привилегии, доступные текущему пользователю или процессу. Другими словами, получение привилегий для любого объекта WMI не определяет параметры привилегий, выполненные при подключении к WMI, или привилегии, фактические при доставке объекта в приемник.

Элементы

Объект SWbemPrivilegeSet имеет следующие типы элементов:

Методы

Объект SWbemPrivilegeSet имеет эти методы.

Метод Описание
Добавить Добавляет объект SWbemPrivilege в коллекцию SWbemPrivilegeSet с помощью константы WbemPrivilegeEnum .
AddAsString Добавляет объект SWbemPrivilege в коллекцию SWbemPrivilegeSet с помощью строки привилегий.
DeleteAll Удаляет все привилегии из коллекции.
Элемент Извлекает объект 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
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemPrivilegeSet
IID
IID_ISWbemPrivilegeSet

См. также раздел

Выполнение привилегированных операций

Выполнение привилегированных операций с помощью VBScript

WbemPrivilegeEnum

Скрипты объектов API

Константы привилегий