Domino 9 und frühere Versionen > ND7: Entwicklung
LScript environ Funktion Problem (Daten werden gecacht..)
RainerMu:
--- Zitat von: Demian am 05.02.09 - 15:18:30 ---auch wenn ich da sonst leider nicht helfen kann, aber der Computername ist doch perse eh der Name des Citrixservers auf dem die Citrixsession läuft?
--- Ende Zitat ---
Da hast Recht,
aber der Clientname ist da der Rechnername (ThinClient, RitchClient etc.). Bearbeite dann den Inhalt sowieso weiter. Ich will ja hier IMMER den eindeutigen RechnerNamen haben ! (Das ist ja durch das "cachen" nicht der Fall..)
Please help me....
BigWim:
Euer Dienstleister ist nicht zufällig die FI, oder?
In Notes konnte ich bisher auf solche Info's verzichten, aber da wir so ziemlich das gleiche Problem hatten (wir haben die Druckerzuordnung an den Clientnamen gebunden), muss ist auch nach dem Arbeitplatzwechsel wissen, an welchem Client der Anwender sitzt.
Das Login machen wir mit KIX, aber die Info erhalte ich über DOS. Ich habe zwei Varianten im Einsatz, wobei ich jetzt adhoc nichts sagen, was für was ist ...
Ich hoffe, Du kommst mit dem Gedankenanstoß zurecht ....
Markus
Function GetClientnamen
$GetClientnamen = @WKSTA
if $IsTS
$TempDatei = "%TEMP%\ClientIP.ini"
; Citrix-Tool wfcinfo nutzen, um Client-IP-Adresse zu ermitteln
shell 'cmd.exe /c $ToolPfad\wfcinfo >$TempDatei'
; Client-IP-Adresse ermitteln
$ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
$rc = ReDirectOutput("$TempDatei")
? 'Ping='
$rc = ReDirectOutput("")
; Und nach Namen "fragen": Ping -a xxx.xxx.xxx.xxx
shell 'cmd.exe /c ping.exe -a $ClientIP -n 1 | find "[$ClientIP]" >>$TempDatei'
; Name ermitteln und zurechtschnibbeln
$ClientName = ReadProfileString($TempDatei, 'WFClient', 'Ping')
; Anfang zurechtschnibbeln
$ClientName = SubStr($ClientName, instr($ClientName, 'Z021'))
; Ende zurechtschnibbeln; da es zwei Endungen gibt (AD - Vollqualifiziert endet mit . / NT endet mit Blank!)
$Ende = instr($ClientName,'.@LDomain')
$Ende = iif($Ende > 0, $Ende, instr($ClientName, ' '))
$ClientName = Left($ClientName, $Ende-1)
;wenn PublishedApplictation ist Clientname = Servername ("Z021ST22 [26")
; $GetClientnamen = iif (instr($GetClientnamen, ' ') > 0, Left($GetClientnamen, 8), $GetClientnamen)
$GetClientnamen = $ClientName
endif
EndFunction
Function GetIcaClientInfo($Versionsart)
; ICAClientInfoWFApplicationName
; ICAClientInfoWFClientAddress
; ICAClientInfoWFClientBuildNumber
; ICAClientInfoWFClientCacheDim
; ICAClientInfoWFClientCacheMem
; ICAClientInfoWFClientDirectory
; ICAClientInfoWFClientDisplay
; ICAClientInfoWFClientName
; ICAClientInfoWFClientProductId
; ICAClientInfoWFConnectState
; ICAClientInfoWFDomainName
; ICAClientInfoWFICABufferLength
; ICAClientInfoWFLicenseEnabler
; ICAClientInfoWFSessionId
; ICAClientInfoWFUserName
; ICAClientInfoWFVersion
; ICAClientInfoWFWinStationName
if exist("C:\Programme\Citrix\System32\wfapi.dll")
$tmpFile = "%temp%\icaclientinfo.txt"
$rc = REDIRECTOUTPUT($tmpFile, 1)
? '[@Date]@CRLF'
$rc = REDIRECTOUTPUT("")
shell 'cmd.exe /c $ToolPfad\icaclientinfo.exe >>$tmpFile 2>NUL:'
$GetIcaClientInfo = ReadProfileString($tmpFile, @Date, "Set $Versionsart")
endif
EndFunction
RainerMu:
:o Bingo !! :o
...was den Dienstleister betrifft.
Die Arbeitsplatzwechsel-Aktionen sind ja bei uns Branchenspezifisch...
Kann es aber morgen erst ausprobieren und melde mich dann hier nochmal..
Erstmal "herzlichen Dank" .
RainerMu:
@BigWim !
Hab mir es letzte Woche gar nicht genau angeschaut. Ist ja Kix Script und somit schon ausgeschieden da wir ZPP Betreiber sind (also kein Zugriff/Einfluss auf LoginScripts etc. LEIDER. :o
Also....
Hat jemand vielleicht doch eine LScript basierende und funktionierende Antwort auf mein Problem ??
BigWim:
Hallo Rainer,
Du brauchst keinen Zugriff auf LoginScripte & Co. Es zwar in KIX umgesetzt, ja, aber die entscheidenen Infomationen liefert DOS. Ich versuche noch mal kurz zu erklären, was Du tun mußt bzw was die Funktion GetClientNamen tut . Du mußt also "nur" die Aufruf aus LotusScript heraus realisieren (z. B. mit Execute o.ä.), aber dafür Bestand hier noch keine Bedarf - ich darf ja KIX ;D
Vielleicht hilft Dir das weiter:
--- Code: ---shell 'cmd.exe /c $ToolPfad\wfcinfo >$TempDatei'
--- Ende Code ---
WFCInfo = Citrix-Tool.
Kommt mit der Citrix-Installation. Liefert Sitzungsdaten, u. a. auch die IP-Adresse des "echten" Clients.
--- Code: ---$ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
--- Ende Code ---
Die Ausgabe von wfcinfo in eine Datei umlenken. Kann genutzt werden wie eine Windows-INI-Datei. Hier im Forum gibt es Beispiele, wie der Zugriff von LS auf die Windows-API genutzt werden. Oder auslesen der IP-Adresse selber realisieren.
--- Code: ---shell 'cmd.exe /c ping.exe -a $ClientIP -n 1 | find "[$ClientIP]" >>$TempDatei'
--- Ende Code ---
Und mit dieser gewonnenen Information per DOS den Namen des Clients ermitteln. Ausgabe wird wieder in eine Datei umgelenkt und ausgelesen. Zwecks Verwertbarkeit habe ich zuvor dafür gesorgt, dass meine Ausgabedatei wie eine INI-Datei behandelt werden kann.
--- Code: ---; Client-IP-Adresse ermitteln
$ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
$rc = ReDirectOutput("$TempDatei")
? 'Ping='
$rc = ReDirectOutput("")
--- Ende Code ---
Viel Erfolg
Markus
Ach so:
Die Funktion GetIcaClientInfo (...) brauchst Du für Deine Zwecke nicht. Habe noch mal nachgeschaut. Irgandwann & Irgendwo mußte ich auch mal wissen, welche Published Application gerade gestartet wird. Mit dieser Funktion kannst Du also mehr über die Sitzung erfahren. Die möglichen Werte sind als Kommentar in der Funktion.
Der entscheidene Aufruf ist allerdings auch wieder "nur" DOS, also auch nachbaubar ....
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln