###############################################
# Brings out differences between:
# MKS
# ActiveState
# Standard distribution
#
# Turn this into a proper test, fail gracefully
# and print error messages
###############################################

#####################################################
# We need different preambles for each implementation
#####################################################

# Use these 4 lines to use ActiveState Perl

#use OLE;
#use Win32;
#$locator = CreateObject OLE 'Wbem.Locator';
#$services = $locator->ConnectServer();

# Use these 3 lines to use MKS Perl

#require COM;
#$locator = new IDispatch 'Wbem.Locator';
#$services = $locator->ConnectServer();

# Use these 4 lines to use "Standard" Perl
# This is the only one that can use a Moniker
use Win32::OLE;
use Win32::OLE::Enum;
$services = Win32::OLE->GetObject('winmgmts:');

$services->{Security_}->{ImpersonationLevel} = 3;

$cls = $services->Get("Win32_process");

$str = $cls->{Path_}->{Path};
print "class: $str";