54 lines
1.8 KiB
Perl
54 lines
1.8 KiB
Perl
#!perl -w
|
|
#***************************************************************************
|
|
# Copyright (c) Microsoft Corporation
|
|
#
|
|
# WMI Sample Script - Privilege manipulation (Perl Script)
|
|
#
|
|
# This script demonstrates how to add privileges using the
|
|
# SWbemPrivilegeSet object.
|
|
#
|
|
#***************************************************************************
|
|
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";
|
|
}
|