LKBEN10779: How the Client Name is derived by the Citrix (Win32) ICA Client


This article has not been checked!

LKB | Created: 02/04/2020 | Version: 1 | Language: EN | Rating: 0 | Outdated: False | Marked for deletion: False

Author: Wim Peeters - Keskon GmbH & Co. KG

Latest update: 05/10/2020 | Comment:


Symptom

You have certain client names in Citrix ICA, this is by design.

Cause

There are different issues involved in creating a client name within a Citrix (ICA-) session.

Solution

First of all, there are differences in how the Clientname is set, depending on the type/Version of ICA Client and wether it's a seamless session or it's initiated over a Webinterface (NFuse).
Basically there are four variables responsible for generating a client name in an ICA session:
- WFCName.ini or registry
- command line (CLIENTNAME variable)
- ICA File ([WFClient] section)
- Connction type (seamless or not seamless)

Priority order:
- .ica file setting
- command line option
- registry key (or WFCName.ini with clients prior to 6.30)
- machine name, if nothing else can be found

With existing seamless session, the client name from WFCName.ini is preferred (--> WFCRUN32.exe), non-seamless session use machine name instead (--> WFCICA32.exe)

Why is it important?
In Citrix Management Console(s) you might want to identify a certain session from a user with multiple connections / sessions. Second, you might want to identify a certain client or type of client, applications or scripts might need this information, but most important: it is used within auto-created printer names.

Dynamic Client Name versus Machine Name

Dynamic Client Name is a feature that is introduced in Win32 ICA Clients at version 7.00 and later. Prior versions of the Win32 ICA client only reported the client name that was statically configured during install of the client and stored in the wfcname.ini. If the Dynamic Client Name feature is not enabled, the client name that is reported to the MetaFrame XP server when connecting to a session is stored in the registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\ClientName (REG_SZ)

When the Dynamic Client Name feature is enabled, the client name that is used is the same as the current client’s machine name, hte above registry key should (!) not be present.

Dynamic Client Name is enabled or disabled (effective on new connections)
- during installing the ICA Client
- in Program Neighborhood Classic: check-box under Tools>ICA Settings>General
- Program Neighborhood Agent (and other Win32 Clients): delete / create above registry key
- remember: Clients older than version 6.30.1050 only store the client name in C:\wfcname.ini (and possibly all non-win32 clients...)


Starting with Win32 ICA Client version 6.30.1050:

- Install and Update routine checks for above registry key; if present, it's presented in the user interface / will be left unchanged. If there is no key, Client Name from WFCName.ini or machine name will be migrated into the registry
- uninstall does not remove Citrix registry keys!
- WFCName.ini will not be created or updated any more, however, it won't be removed either (!)
- The client name is limited to 20 (single-byte) characters or 20 bytes (not including the terminating NULL character)
- Client serial numbers (previously stored in "ClientSN=" in WFCName.ini) are not supported any more (only when ICA Client supplied with Citrix PC Client Pack was used, license number based on serial number may still be needed to be entered)

NFUSE / Webinterface
WebinterFace generates a ClientName=value line from template.ica based on the current domain name and username.
Anonymous logins use a different ICA template file: guest_template.ica.

Modifying "ClientName=[NFuse_ClientName]" to "ClientName= " in the template.ica will return the Hostname of the workstation.

Watch out:
Modifying "ClientName=[NFuse_ClientName]" to "ClientName= " in guest_template.ica results in an error message:

"ERROR: An internal error occurred."

Workaround:
Modify the guest_template.ica and remove the line:

ClientName=[NFuse_ClientName]

Insert two lines:

BogusClientName=[NFuse_ClientName]

ClientName=

(If desired, use anything instead of 'Bogus').

Important: The [NFuse_ClientName] tag MUST (!!!) appear somewhere in the template file.

 

About the Author

Wim Peeters is electronics engineer with an additional master in IT and over 30 years of experience including time spent in support, development, consulting, training and database administration. Wim has worked with SQL Server since version 6.5. He has developed in C/C++, Java and C# on Windows and Linux in different European countries and different European languages. He writes knowledge base articles to solve IT problems and publishes them on the Lubby Knowledge Platform where he is one of the most important contributors and the main developer.

Disclaimer:

The information provided in this document is intended for your information only. Lubby makes no claims to the validity of this information. Use of this information is at own risk!