Thread Win32::Service::GetStatus - (37 answers)
Opened by jan99 at 2015-03-06 10:41

bianca
 2023-12-07 11:54
#195624 #195624
User since
2009-09-13
7016 articles
BenutzerIn

user image
Danke der Nachfrage und guten Tag!

Habe es mir nochmal vorgenommen und es funktioniert wie erwartet. Bei Windows muss man das Script auf jeden Fall in einer Administrator Umgebung starten, weil sonst die Rechte nicht reichen. Und das ist hier auch gegeben, ich nutze das schon viele Jahre ohne Schwierigkeiten.

Hier was zum spielen und nachvollziehen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
local $Data::Dumper::Purity = 1;
local $Data::Dumper::Useqq = 1;
local $Data::Dumper::Deparse = 1;
local $Data::Dumper::Sortkeys = sub {
    my ($hash) = @_;
    return [(sort {lc $a cmp lc $b} keys %$hash)]; 
};

$! = ();
$@ = '';
require Win32::Service;
print "Version: ".Win32::Service->VERSION."\n";

Win32::Service::StartService('','Apache2.4') or do {
    print "Fehler '".(defined $! ? $! : '-undef-')."' / '"
        .(defined $@ ? $@ : '-undef-')."'\n";
};

sleep 1;    # sonst ist der Status "StartPending"

my %sttus;

if (Win32::Service::GetStatus('','Apache2.4',\%sttus)) {
    print "Status:\n".Dumper(\%sttus)."\n";
}
else {
    print "Status nicht abfragbar\n";
}

Habe mich wahrscheinlich einfach "vertestet".

Eine neue Erkenntnis habe ich auf Windows 10 64 Bit mit Strawberry Perl 5.30.3 und Win32::Service Version 0.07 gewonnen: wenn man auf einen schon laufenden Dienst ein Win32::Service::StartService() loslässt, meldet $! ein No such file or directory. Kann man nutzen oder ignorieren.

Danke
10 print "Hallo"
20 goto 10

View full thread Win32::Service::GetStatus -