Objet SWbemPrivilegeSet

Un objet SWbemPrivilegeSet est une collection d’objets SWbemPrivilege dans un objet SWbemSecurity qui demande des privilèges spécifiques pour un objet WMI (Windows Management Instrumentation). Consultez la liste des privilèges dans Constantes de privilèges. Les éléments sont ajoutés à la collection à l’aide des méthodes Add et AddAsString. Les éléments sont récupérés de la collection à l’aide de la méthode Item et supprimés à l’aide de la méthode Remove. Cet objet ne peut pas être créé par l’appel de méthode CreateObject VBScript. Pour plus d’informations, consultez Accès à une collection.

Un objet SWbemPrivilegeSet est un ensemble de demandes de remplacement de privilèges pour un objet spécifique. Lorsqu’un appel d’API est effectué à l’aide de cet objet, les demandes de remplacement de privilèges sont tentées. L’objet SWbemPrivilegeSet ne définit pas les privilèges disponibles pour l’utilisateur ou le processus actuel. En d’autres termes, l’obtention des privilèges d’un objet WMI n’identifie pas les paramètres de privilèges qui sont effectués lors de la connexion à WMI, ni les privilèges en vigueur lorsqu’un objet est remis à un récepteur.

Membres

L’objet SWbemPrivilegeSet présente les types de membres suivants :

Méthodes

L’objet SWbemPrivilegeSet possède ces méthodes.

Méthode Description
Ajouter Ajoute un objet SWbemPrivilege à la collection SWbemPrivilegeSet à l’aide d’une constante WbemPrivilegeEnum.
AddAsString Ajoute un objet SWbemPrivilege à la collection SWbemPrivilegeSet à l’aide d’une chaîne de privilèges.
DeleteAll Supprime tous les privilèges de la collection.
Élément Récupère un objet SWbemPrivilege de la collection. Il s'agit de la méthode par défaut de cet objet.
Supprimer Supprime un objet SWbemPrivilege de la collection.

Propriétés

L’objet SWbemPrivilegeSet possède ces propriétés.

Propriété Type d’accès Description
Count
Lecture seule
Nombre d’éléments dans la collection

Exemples

L’exemple de code VBScript suivant obtient un objet SWbemPrivileges et ajoute tous les privilèges disponibles à la collection par valeur de privilège, comme défini dans 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

L’exemple de code VBScript suivant montre comment ajouter des privilèges à l’aide de l’objet 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 

L’exemple de code Perl suivant montre comment ajouter des privilèges à l’aide de l’objet 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";
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Wbemdisp.h
Bibliothèque de types
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemPrivilegeSet
IID
IID_ISWbemPrivilegeSet

Voir aussi

Exécution d’opérations privilégiées

Exécution d’opérations privilégiées à l’aide de VBScript

WbemPrivilegeEnum

Objets de l'API de script

Constantes de privilèges