Consultor Eletrônico



Kbase P158492: Windows Terminal Service client connecting to Terminal Services via telnet gets error 4110 trying to
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   13/01/2010
Status: Unverified

SYMPTOM(s):

Windows Terminal Service client connecting to Terminal Services via telnet gets error 4110 trying to print to named printer.

Unable to create Printer Device Context:printer. (4110)

Printer on Terminal Services client matches printer name on Terminal Services server.

FACT(s) (Environment):

Citrix/Terminal Services
OpenEdge 10.1C

CAUSE:

Bug# OE00194551

CAUSE:

When a Windows Terminal Services client makes a connection to a Terminal Services Server the client will automatically add locally defined printers on the Terminal Services client to the list of available printers while attached to the Server.

The Progress executable is unable to identify the intended destination since both the printers contain the same name.

Windows automatically appends (redirected <number>) to the printer name.

FIX:

A temporary workaround exists to remove the conflicting entries on the Terminal Services server for all the redirected entries (these are client entries).


FIX:


This quick code should say if there is a problem with a potential conflicting key.
DEFINE VARIABLE listprinters AS INTEGER NO-UNDO.
DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
DEFINE VARIABLE counter AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE currentvalue AS CHARACTER INIT "psc006" NO-UNDO.
LOAD "Software\Microsoft\Windows NT\CurrentVersion\Windows" BASE-KEY "HKEY_CURRENT_USER".
USE "Software\Microsoft\Windows NT\CurrentVersion\Windows".
GET-KEY-VALUE SECTION "" KEY "device" VALUE cvalue.

USE ''.
LOAD "Software\Microsoft\Windows NT\CurrentVersion" BASE-KEY "HKEY_CURRENT_USER".
USE "Software\Microsoft\Windows NT\CurrentVersion".

GET-KEY-VALUE SECTION "printerports" KEY "" VALUE cvalue.
REPEAT listprinters = 1 TO NUM-ENTRIES(cvalue).
GET-KEY-VALUE SECTION "printerports" KEY "" VALUE cvalue.
IF index(entry(listprinters,cvalue),currentvalue) > 0 THEN
ASSIGN counter = counter + 1.
END.
USE ''.

MESSAGE "There are " (counter - 1) " keys in printerports which might conflict." VIEW-AS ALERT-BOX.