Compartir a través de


SWbemPrivilegeSet (objeto)

Un objeto SWbemPrivilegeSet es una colección de objetos SWbemPrivilege en un objeto SWbemSecurity que solicita privilegios específicos para un objeto de Instrumental de administración de Windows (WMI). Consulte la lista de privilegios en Constantes de privilegios. Se agregan elementos a la colección mediante los métodos Add y AddAsString. Se recuperan elementos de la colección mediante el método Item y se quitan mediante el método Remove. Este objeto no se puede crear mediante la llamada al método CreateObject de VBScript. Para más información, consulte Acceso a una colección.

Un objeto SWbemPrivilegeSet es un conjunto de solicitudes de invalidación de privilegios para un objeto específico. Cuando se realiza una llamada API mediante este objeto, se intentan las solicitudes de invalidación de privilegios. El objeto SWbemPrivilegeSet no define los privilegios disponibles para el usuario o proceso actual. En otras palabras, la obtención de los privilegios para cualquier objeto WMI no identifica la configuración de privilegios realizada en la conexión a WMI o los privilegios en vigor cuando se entrega un objeto a un receptor.

Miembros

El objeto SWbemNamedValue contiene estos tipos de elementos:

Métodos

El objeto SWbemPrivilegeSet tiene estos métodos.

Método Descripción
Sumar Agrega un objeto SWbemPrivilege a la colección SWbemPrivilegeSet mediante una constante WbemPrivilegeEnum.
AddAsString Agrega un objeto SWbemPrivilege a la colección SWbemPrivilegeSet mediante una cadena de privilegios.
DeleteAll Elimina todos los privilegios de la colección.
Elemento Recupera un objeto SWbemPrivilege de la colección. Este es el método predeterminado de este objeto.
Quitar Quita un objeto SWbemPrivilege de la colección.

Propiedades

El objeto SWbemPrivilegeSet tiene estas propiedades.

Propiedad Tipo de acceso Descripción
Count
Solo lectura
Número de elementos de la colección.

Ejemplos

En el siguiente ejemplo de código de VBScript se obtiene un objeto SWbemPrivileges y se agregan todos los privilegios disponibles a la colección por valor de privilegio, como se define en 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

En el siguiente ejemplo de código de VBScript se muestra cómo agregar privilegios mediante el 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 

En el siguiente ejemplo de código de Perl se muestra cómo agregar privilegios mediante el 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 Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemPrivilegeSet
IID
IID_ISWbemPrivilegeSet

Consulte también

Ejecución de operaciones con privilegios

Ejecución de operaciones con privilegios mediante VBScript

WbemPrivilegeEnum

Objetos de API de scripting

Constantes de privilegios