primax7
Goto Top

Pozess wird beim Schliessen einer öffentlichen Anwendung unter Citrix nicht beendet

Hallo Alle zusammen,

wir haben bei uns im Krankenhaus folgendes Problem:
Wir arbeiten teilweise mit Citrix, damit unser KIS auch auf älteren PCs vernünftig läuft. Jetzt haben diese PCs Cherry Chipkartentastaturen angeschlossen. Das Auslesen der KV-Karten funktioniert auch problemlos. ABER...
Sobald die Karte ausgelesen wird startet in der Session der Prozess "dllhost.exe". Dieser wird laut Cherry auch benötigt. Beendet man dann die öffentliche Anwendung, schliesst sich das Fenster auch ganz brav, nur die beiden Prozesse bleiben aktiv. Also einmal der Prozess des KIS und auch diese dllhost.exe. Diese dllhost.exe blockiert also das richtige Beenden des KIS, und somit auch das Beenden der Citrix-Session. Denn wenn man keine KV-Karte ausliest und dann die öffentliche Anwendung beenedet, wird auch die Session beendet.
Hat irgendjemand eine Idee wir man das killen dieser dllhost.exe, unter dem jeweilgen Benutzer und auf dem jeweiligen Citrix-Server, erzwingen kann.

Wäre für jede Hilfe und Anregung dankbar.

Mfg Primax7

Content-Key: 79940

Url: https://administrator.de/contentid/79940

Printed on: April 25, 2024 at 13:04 o'clock

Member: stbewo
stbewo Feb 05, 2008 at 10:43:08 (UTC)
Goto Top
Hi Primax7,

in welchem Kontext wird dieses Programm ausgeführt? Im Taskmanager als System, Admin oder User?

Gruß
Stefan
Member: Primax7
Primax7 Feb 05, 2008 at 12:30:38 (UTC)
Goto Top
Hi Stefan,

der Prozess ist im Taskmanager unter dem Benutzer "xyz" zu sehen. D.h. mache ich das gleiche auch noch mit dem Benutzer "abc" ist ein weiterer Prozess unter Benutzer "abc" zu sehen.
Ich sehe die Prozesse einmal im Taskmanager auf dem Citrix-Server, und in der Citrix Access Management Console in den Prozessen der jeweilgen Session.

Gruß Primax7
Member: stbewo
stbewo Feb 05, 2008 at 12:46:53 (UTC)
Goto Top
Hi Primax,

lege Dir ein Batch an mit folgendem Inhalt an, der Deine Publ. Applikation startet.

--- Start.CMD ----
@echo OFF
hier Aufruf Deines Programmes
@for /F "tokens=1,2 delims== " %%i in ('tasklist^|findstr "dllhost.exe"') do TASKKILL /PID %%j

Nach Beenden des Batches sollte der Prozess dllhost.exe durch Taskkill beendet werden.

Gruß
Stefan
Member: stbewo
stbewo Feb 05, 2008 at 13:01:56 (UTC)
Goto Top
Hier noch eine erweiterte Version, die den Sessionname prüft. Der Benutzer sollte ja in seiner Session diesen Task abschießen und nicht den von anderen. Habe es aber nicht ausprobiert.
In Sessionname steht seine Session-ID wie z.B. "ICA-tcp#6398".

@for /F "tokens=1,2,3 delims== " %%i in ('tasklist^|findstr "dllhost.exe"') do if "%%k"=="%sessionname%" TASKKILL /PID %%j


Gruß
Stefan
Member: Primax7
Primax7 Feb 06, 2008 at 12:53:26 (UTC)
Goto Top
Hi Stefan,

danke für deine Hilfe. Habe den killtask in unserem Logoff-Script eingebaut. So müsste es funktionieren. Nur startet das Script nicht beim Beenden der öffentlichen Anwendung.
Dieses Programm kann ich ja nur mit "Beenden" oder mit dem "X" schliessen. Doch anscheinend kommt das Logoff-Script dann gar nicht zum Einsatz.
Benutze ich den public Desktop und sage dann ganz normal "Abmelden" schon. ???
Scheint so als ob ich dann die öffentliche Anwendung vergessen kann und nur mit dem Public Desktop arbeiten kann.

Gruß Primax7
Member: stbewo
stbewo Feb 06, 2008 at 13:14:31 (UTC)
Goto Top
Hi Primax,

Du musst nicht auf die Publ. Application verzichten. Erstelle einfach ein CMD File mit den Befehlen und starte über dieses CMD File Deine Applikation. Du kannst ja als Publ. Appl. dieses CMD File in Citrix angeben.

Wie oben beschrieben:

--- Deine Application.CMD ----
@echo OFF
hier Aufruf Deines Programmes wie z.B. Winword.exe
@for /F "tokens=1,2 delims== " %%i in ('tasklist^|findstr "dllhost.exe"') do TASKKILL /PID %%j

Gruß
Stefan
Member: Primax7
Primax7 Feb 07, 2008 at 08:02:46 (UTC)
Goto Top
Hi Stefan,

an sich ne sehr gute Idee. Doch irgendwie klappt das nicht. Beim Schliessen der publ. Appl. (Also der CMD-Datei) bleibt das Eingabeaufforderungsfenster schwarz offen stehen und es tut sich dann nichts mehr. Der Prozess wird nicht beendet.
Es wird aber auf dem Server eine dev_rfc.trc Datei angelegt, in der dann folgendes steht:

ERROR file opened at 20080207 085512 Mitteleuropis, SAP-REL 640,0,17 RFC-VER 3 661550 MT-SLT:6860 rfcClose : not initalized !!!

Sagt dir das was? Fehlt irgendwo eine Berechtigung?

Gruß Primax7
Member: stbewo
stbewo Feb 07, 2008 at 08:20:53 (UTC)
Goto Top
Hi Primax7,

die Meldung bezieht sich SAP. Kann aber damit auch nichts anfangen.

Versuche es einmal hiermit um den Prozess zu sehen.

@echo OFF
hier Aufruf Deines Programmes
@for /F "tokens=1,2 delims== " %%i in ('tasklist^|findstr "dllhost.exe"') do ECHO %%j
pause

Gruß
Stefan
Member: Primax7
Primax7 Feb 07, 2008 at 11:20:59 (UTC)
Goto Top
Hi,

lese ich die KV-Karte nicht aus (d.h. der Prozess dllhost.exe wird für den Benutzer nicht gestartet) zeigt mir die Batch die beiden Prozesse des Systems (System und Netzwerkdienst haben auch immer eine dllhost.exe).
Lese ich die Karte aus und die dllhost.exe wird für den Benutzer gestartet bleibt das cmd-Fenster wieder so offen stehen.
Ich hatte das so schon mal mit dem Taskkill probiert, da hat er versucht alle dllhost.exe-Prozesse zu killen. Für die System-Prozesse hat natürlich die Berechtigung gefehlt, aber für den Benutzer hat er ganz richtig den Prozess beendet.
Warum das jetzt nicht klappt --> Keine Ahnung !!!???!!!

MfG Primax7
Member: stbewo
stbewo Feb 07, 2008 at 11:40:03 (UTC)
Goto Top
Hi Primax7,

ich habe heute gehört, dass es einen Citrix Registry Eintrag gibt in den man die Prozesse einträgt, die beim beenden einer Session gelöscht werden sollen. Schau' doch mal im Citrix Forum nach um welchen Eintrag es sich hierbei handelt.

Gruß
Stefan

PS: Hier ist der Artikel dazu.

http://support.citrix.com/article/CTX891671
Member: Primax7
Primax7 Feb 08, 2008 at 08:45:27 (UTC)
Goto Top
Hi Stefan,

ES KLAPPT! Super, vielen Dank für deine Hilfe. Habe folgenden Reg-Eintrag vorgenommen:
Unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWI\ die Zeichenfolge "LogoffCheckSysModules" hinzugefügt. Als Wert meine Programm.exe vom KIS und die dllhost.exe eingetragen. Nach max. 30 Sek werden beide beendet und die Session ist abgemeldet !!!!

Gruß Primax7