Schrift
[thread]8101[/thread]

WIN2000: läuft ein bestimmtes Programm gerade?



<< >> 4 Einträge, 1 Seite
ronald
 2006-06-22 10:14
#67553 #67553
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Ich muss wissen ob eine bestimmte Anwendung gerade auf dem Server läuft.

Wenn ich im Task-Manager nachschaue sehe ich nur meine eigenen Anwendungen (ich habe keine Admin-Rechte).

Die einzige Stelle, die ich gefunden habe, sind die offenen Dateien
(Computer Management > Shared Folders > Open Files).

Gibt es ein API, mit dem ich die offenen Dateien auslesen kann -
oder gibt es direktere Möglichkeiten um herauszubekommen ob eine Anwendung läuft?
----------------
Hintergrund:
Die Anwendung heisst "Axapta" und es geht um die Label.
Solange jemand angemeldet ist werden die neuen/geänderten Labels intern gepuffert; wenn alle abgemeldet sind werden die Labels in eine ASCII-Datei geschrieben.
Wenn also jemand angemeldet ist, dann sind diese Daten nicht aktuell und bei der Auslieferung/Übersetzung fehlen sie. Das darf nicht sein - bzw. ich brauche eine Nachricht falls das so ist.
GwenDragon
 2006-06-22 11:26
#67554 #67554
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
ronald
 2006-06-23 17:26
#67555 #67555
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Ich habe das Win32::Process::Info installiert
und war überrascht, wie einfach man die Prozessliste auslesen kann. Vielen Dank.

Nur ...
leider löst es mein Problem nicht.
Denn die Prozesse, die die Dateien sperren, laufen ja auf den Clients.
Auf dem File-Server gibt es nur die Datei-Sperren.

Also nochmal: Weiss jemand, wie ich die Dateisperren (Computer Management > Shared Folders > Open Files) in perl auslesen kann?
esskar
 2006-06-23 22:37
#67556 #67556
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
schau mal, ob dir eins der folgenden Script hilft:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use strict;
use Win32::OLE('in');

use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;

my @computers = ("SK");
foreach my $computer (@computers) {
print "\n";
print "==========================================\n";
print "Computer: $computer\n";
print "==========================================\n";

my $objWMIService = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
my $colItems = $objWMIService->ExecQuery("SELECT * FROM Win32_ShareToDirectory", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);

foreach my $objItem (in $colItems) {
print "Share: $objItem->{Share}\n";
print "SharedElement: $objItem->{SharedElement}\n";
print "\n";
}
}


Code: (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
use strict;
use Win32::OLE('in');

use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;

my @computers = ("SK");
foreach my $computer (@computers) {
print "\n";
print "==========================================\n";
print "Computer: $computer\n";
print "==========================================\n";

my $objWMIService = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
my $colItems = $objWMIService->ExecQuery("SELECT * FROM Win32_Share", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);

foreach my $objItem (in $colItems) {
print "AccessMask: $objItem->{AccessMask}\n";
print "AllowMaximum: $objItem->{AllowMaximum}\n";
print "Caption: $objItem->{Caption}\n";
print "Description: $objItem->{Description}\n";
print "InstallDate: $objItem->{InstallDate}\n";
print "MaximumAllowed: $objItem->{MaximumAllowed}\n";
print "Name: $objItem->{Name}\n";
print "Path: $objItem->{Path}\n";
print "Status: $objItem->{Status}\n";
print "Type: $objItem->{Type}\n";
print "\n";
}
}
<< >> 4 Einträge, 1 Seite



View all threads created 2006-06-22 10:14.