/ Community

VFP Umgang mit Terminal Services

Zusammenfassung einer Antwort aus der Newsgruppe microsoft.public.de.fox:

1. Wie kann das Programm feststellen, dass es in einer TS-Session läuft?

Mittels der Os() Funktion kannst du das ermitteln. Siehe VFP-Hilfe:

If Bittest(Val(Os(10)),4) Or Bittest(Val(Os(10)),8)
     *--- Running in TS environment...
     Sys(602,0)
EndIf

2. Wie kann das Programm feststellen, wie der Client-Rechner heisst?

GetEnv("CLIENTNAME")

3: Da Drucker und ggf. auch Laufwerke (z.B. Memory-Stick für Datensicherung) des Clients mit verwendet werden, müssten Client-abhängige Konfigurations-Dateien (z.Z. gibt es nur ein INI-File im Applikationsverzeichnis) verwendet werden. Wo und wie speichere ich die am besten?

Im Benutzerprofil - Home(7) zum Beispiel oder GetEnv("LocalAppData") bzw. GetEnv("AppData"). Außerdem kannst du die WIN32 API Funktion SHGetFolderPath verwenden:

#DEFINE CSIDL_MYDOCUMENTS 0x000c
#DEFINE CSIDL_LOCAL_APPDATA 0x001c

DECLARE SHORT SHGetFolderPath IN shell32;
 INTEGER   hwndOwner,;
 INTEGER   nFolder,;
 INTEGER   hToken,;
 INTEGER   dwFlags,;
 STRING  @ pszPath

LOCAL lcBuffer
lcBuffer = REPLICATE(CHR(0),254)
IF SHGetFolderPath(0, CSIDL_MYDOCUMENTS, 0, 0, @lcBuffer) = 0
   ? LEFT(lcBuffer,AT(CHR(0),lcBuffer)-1)
ENDIF

Weitere Konstanten für Ordner (CSIDL_*) findest du in der MSDN:

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
(eine Zeile!)

4: Ich habe grad mal per TS-Session als Administrator eine Anwendungs-Installation auf dem Win2003-Server gemacht. Dabei ist mir aufgefallen, dass die Dateien, die normalerweise in WINDOWSSYSTEM32 installiert werden (msvcr71.dll usw.) jetzt in's Verzeichnis Dokumente und EinstellungenAdministratorWINDOWS gekommen sind und somit nicht für die anderen User zur Verfügung stehen. Wie lässt sich das umgehen?

Hast du den TS-Installmodus vorher aktiviert? Das geht entweder 'automatisch' über den visuellen Weg über Systemsteuerung : Software oder per Prompt:

CHANGE USER /INSTALL  
Enable install mode. This command has to be run before
                         installing any new software on a Terminal Server.
                         This will create a .ini file for the application
                         in the TS system directory.

CHANGE USER /EXECUTE  
Enable execute mode (default)
                         Run this when an installation is complete.

CHANGE USER /QUERY    
Display current settings.

Außerdem findest du hier eine nette Zusammenstellung an Fragen und Antworten zum Thema Terminal Services:

https://www.microsoft.com/technet/community/en-us/terminal/terminal_faq.mspx

Ich hoffe, dass dies einige Tipps fuer euch lieferte...

Bis denne, JoKi