INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.09.2014, 12:58
Beitrag #1

Goldie Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Sep 2014

8.5
2011
DE



mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo an Alle,

ich habe ein Problem mit multiplen Programminstanzen und ich hoffe ihr könnt mir da weiter helfen.

Grundsätzlich kümmert sich eine erstellte Exe ja selbst darum zu prüfen, ob sie schon mal geöffnet wurde und lässt das zweite Öffnen dann nicht zu (es sei denn man erlaubt es explizit).

Auf dem PC (Win7), wo meine Anwendung laufen soll, gibt es mehrere Benutzer. Nun habe ich festgestellt, dass ich eine Exe doppelt starten kann, wenn ich über "switch user" zwischendurch den Benutzer wechlse. Im Taskmanager ist der Prozess dann auch zweimal zu sehen. Ich möchte das aber gern verhindern - Kennt da jemand eine Möglichkeit?

Mir würde nur einfallen, selbst zu schauen, ob der Prozess bereits gestartet ist. Gibt es da eine LabView eigene Möglichkeit? Ich weiß, dass man die Informationen über "Systembefehl ausführen - cmd/tasklist" oder die WinAPI rausbekommen kann, wenn es aber auch einfacher geht, käme mir das natürlich entgegen.

Vielen Dank schonmal im Voraus für eure Ideen!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.09.2014, 13:04
Beitrag #2

GerdW Online
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo Goldie,

es gibt auch andere Wege, die Präsenz einer EXE anzuzeigen:
- Die EXE erstellt eine Datei ("Lock-File") sobald sie startet. Wenn eine andere Instanz der EXE startet und die Datei existiert schon, beendet sie sich gleich wieder…
- Die EXE öffnet einen Netzwerk-Port (TCP/UDP) und wartet dort auf Botschaften. Wenn eine andere Instanz startet und der Port ist schon belegt, beendet sie sich gleich wieder…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.09.2014, 16:06
Beitrag #3

Goldie Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Sep 2014

8.5
2011
DE



RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo GerdW,

erstmal danke für deine schnelle Anwort.

Wenn ich das richtig verstehe, soll die Exe die Datei beim Start selbst erzeugen und beim Beenden wieder löschen?! Da fallen mir spontan zwei Probleme ein.

-Meine Kollegen benutzen zum Beenden gerne die Tastenkombination Alt+F4, die aber die Exe nicht geregelt beendet -> das könnte man villeicht noch über ein Event abfangen?
-Was mache ich, wenn der PC z.B. durch einen Stromausfall "hart" ausgeschalten wird? Dann ist die Datei da und das Programm denkt immer, es sei schon geöffnet.

Über den Vorschlag mit dem Netzwerk-Port werde ich mal nachdenken.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2014, 07:42
Beitrag #4

GerdW Online
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo Goldie,

Zitat:Meine Kollegen benutzen zum Beenden gerne die Tastenkombination Alt+F4, die aber die Exe nicht geregelt beendet -> das könnte man villeicht noch über ein Event abfangen?
Ja, kannst du. Mit der Event-Struktur. Und "Panel Close?"-Event…

Zitat:Was mache ich, wenn der PC z.B. durch einen Stromausfall "hart" ausgeschalten wird? Dann ist die Datei da und das Programm denkt immer, es sei schon geöffnet.
Bei einem Stromausfall hast du andere Probleme Smile
Dann musst du eine evtl. noch vorhandene Datei manuell löschen…

Du siehst, alles hat seine Vor- und Nachteile. Vielleicht ist der Weg über den TaskManager (cmd/tasklist) doch einfacher?
Oder man verbietet verschiedene User-Accounts und lässt alles über einen Mess-Account laufen? Dein Programm kann auch den aktuell angemeldeten User abfragen und hier Restriktionen auflegen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2014, 14:50
Beitrag #5

Goldie Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Sep 2014

8.5
2011
DE



RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo GerdW,

das mit dem "Panel Close?"-Event werd ich mir mal merken und mit reinbauen.

Was die Instanzen angeht, werde ich das wohl wirklich über den TaskManager machen. Der PC mit besagtem Programm gehört zu einer Maschine, die an einen Kunden verkauft ist. Wir brauchen also die eingestellten Benutzer, um mögliche Eingriffe in unser System zu verhindern. Daher kann ich auch nicht verlangen irgendwelche Dateien von Hand zu löschen oder ähnliches.

Trotzdem Danke für deine Unterstützung und einen schönen Nachmittag.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2014, 17:53
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Also IMHO dürfte das hier am einfachsten zu realisieren sein (gerade mit UDP).
(10.09.2014 13:04 )GerdW schrieb:  - Die EXE öffnet einen Netzwerk-Port (TCP/UDP) und wartet dort auf Botschaften. Wenn eine andere Instanz startet und der Port ist schon belegt, beendet sie sich gleich wieder…
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.09.2014, 21:54
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
(15.09.2014 17:53 )jg schrieb:  Also IMHO dürfte das hier am einfachsten zu realisieren sein (gerade mit UDP).
(10.09.2014 13:04 )GerdW schrieb:  - Die EXE öffnet einen Netzwerk-Port (TCP/UDP) und wartet dort auf Botschaften. Wenn eine andere Instanz startet und der Port ist schon belegt, beendet sie sich gleich wieder…
Gruß, Jens

Einfach, aber nicht ganz idiotensicher. Könnte eine beliebige Applikation sein die diesen Port schon offen hat, entweder durch ihn geziehlt anzufragen oder aber durch das Betriebssystem dynamisch ausgegben. Wäre schon lästig wenn der Kunde die eigene Applikation nicht starten kann, wenn eine bestimmte andere Applikation schon aktiv ist (wenn diese den Port explizit anfragt) oder sporadisch wenn Windows diesen Port schon ausgegeben hat.

Unter Windows und neueren LabVIEW Versionen könnte man dem eventuel mit etwas extra Mühe abhelfen indem man einen Servicenamen spezifiziert anstelle einer Portnummer. Der wird dann beim NI Service Manager registriert.

Beim aufstarten versucht man erst mit dem Servicenamen eine Verbindung als Client. Wenn das gelingt kann man zur Sicherheit noch ein bestimmtes Command-Response Protokoll probieren. Wenn die Verbindung nicht gelingt kann man versuchen einen Server mit dem Servicenamen zu öffnen und ihn geöffnet halten.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.10.2014, 12:47
Beitrag #8

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
RE: mehrere Programminstanzen bei unterschiedlichen Benutzern verhindern
Hallo,
Zitat:Auf dem PC (Win7), wo meine Anwendung laufen soll
versuch mal das Beispiel im Anhang.

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
   

0.0 .zip  Starttest Folder_8_5.zip (Größe: 13,86 KB / Downloads: 273)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Installation unter Windows 10 verhindern tuhpon 2 7.526 17.09.2019 17:21
Letzter Beitrag: tuhpon
  Laufende exe soll den Start einer anderen exe verhindern. TpunktN 6 10.907 12.02.2017 19:43
Letzter Beitrag: rolfk
  Tabelle mit unterschiedlichen Daten Typen Felidae_TWC 2 7.282 04.06.2012 09:06
Letzter Beitrag: Felidae_TWC
  EXE unter unterschiedlichen Benutzerprofile starten Serg 0 3.524 24.10.2007 09:05
Letzter Beitrag: Serg
  Autostart der Applikation verhindern tron 15 16.957 04.07.2007 06:04
Letzter Beitrag: rolfk

Gehe zu: