http://qs321.pair.com?node_id=314605

Dru has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I'm trying to monitor a service on Win2k and I wrote the following script based on this node Simple WIN32 Service Test.

No matter what I do, I can't get the service to stop. I'm using PGPService just for testing. I'm actually going to be monitoring PCAnywhere's service. Anyway, does anyone know why this is not working?
use strict; use warnings; use Win32::Service; #set up a hash of known service states my %statcodeHash = ( '1' => 'stopped.', '2' => 'start pending.', '3' => 'stop pending.', '4' => 'running.', '5' => 'continue pending.', '6' => 'pause pending.', '7' => 'paused.' ); my (%serviceHash,%statusHash); my ($key,$svc); #go get 'em... Win32::Service::GetServices("", \%serviceHash); foreach $key(keys %serviceHash){ my %statusHash; if ($serviceHash{"$key"} eq 'PGPService'){ $svc = $serviceHash{"$key"}; } } Win32::Service::GetStatus("", $svc, \%statusHash); #if ($statusHash{"CurrentState"} =~ /4/){ Win32::Service::StopService('', $svc); #} print "$svc" . " is currently " . $statcodeHash{$statusHash{"CurrentSt +ate"}} . "\n";
Which keeps producing  PGPService is currently running.

Thanks,
Dru