Objeto SWbemPrivilegeSet

Um objeto SWbemPrivilegeSet é uma coleção de objetos SWbemPrivilege em um objeto SWbemSecurity que solicita privilégios específicos para um objeto de WMI (Instrumentação de Gerenciamento do Windows). Consulte a lista de privilégios em Constantes de Privilégio. Itens são adicionados à coleção usando os métodos Add e AddAsString. Itens são recuperados da coleção usando o método Item e removidos usando o método Remove. Esse objeto não pode ser criado pela chamada de método CreateObject do VBScript. Para obter mais informações, consulte Acessar uma coleção.

Um objeto SWbemPrivilegeSet é um conjunto de solicitações de substituição de privilégio para um objeto específico. Quando uma chamada à API é feita usando esse objeto, solicitações de substituição de privilégio são tentadas. O objeto SWbemPrivilegeSet não define os privilégios disponíveis para o usuário ou o processo atual. Em outras palavras, obter os privilégios de qualquer objeto do WMI não identifica as configurações de privilégio feitas na conexão com o WMI nem os privilégios em vigor quando um objeto é entregue a um coletor.

Membros

O objeto SWbemPrivilegeSet tem estes tipos de membros:

Métodos

O objeto SWbemPrivilegeSet tem esses métodos.

Método Descrição
Adicionar Adiciona um objeto SWbemPrivilege à coleção SWbemPrivilegeSet usando uma constante WbemPrivilegeEnum.
AddAsString Adiciona um objeto SWbemPrivilege à coleção SWbemPrivilegeSet usando uma cadeia de caracteres de privilégio.
DeleteAll Exclui os privilégios da coleção.
Item Recupera um objeto SWbemPrivilege da coleção. Esse é o método padrão do objeto .
Remover Remove um objeto SWbemPrivilege da coleção.

Propriedades

O objeto SWbemPrivilegeSet tem essas propriedades.

Propriedade Tipo de acesso Descrição
Contagem
Somente leitura
Número de itens na coleção.

Exemplos

O exemplo de código VBScript a seguir obtém um objeto SWbemPrivileges e adiciona todos os privilégios disponíveis à coleção por valor de privilégio, conforme definido em 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

O exemplo de código VBScript a seguir demonstra como adicionar privilégios usando o objeto 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 

O exemplo de código Perl a seguir demonstra como adicionar privilégios usando o objeto 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";
}

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemPrivilegeSet
IID
IID_ISWbemPrivilegeSet

Confira também

Executar operações privilegiadas

Executar operações privilegiadas usando VBScript

WbemPrivilegeEnum

Objetos da API de script

Constantes de privilégio