Monthly Archives: July 2011

VMware ESX hgfs.dat file causes Terminal Services to duplicate users’ profiles

Environment:  Windows Server 2003 Service Pack 2, Citrix XenApp 5 Roll Up Pack 7, Citrix User Profile Management 3.2, VMware ESX 4.0.

Problem description: in some situation, when using Terminal Server roaming profiles or Citrix UPM, users connecting to a Terminal Server may have their profile duplicated in the form of user.domain.001, user.domain.002, user.domain.003 and so on.

Problem cause: the problem is caused by a bug in the VMware tools “shared folder” feature. Such feature is installed when VMware tools are installed with the “Complete” option. When a user logs off, the Terminal Server tries to copy the hgfs.dat file back to the profiles folder but the operation fails because VMware keeps the file locked with exclusive access. When the user logs in again, a new and duplicated user profile folder is created.

Problem solution: the “shared folder” feature can be disabled by modifying a registry key (the feature is not used by ESX and GSX  Server).

  1. Disable users logons on the server;
  2. When all users are logged off delete the profiles folders in c:\Documents and Settings\;
  3. Open the registry editor: regedit;
  4. Find the following key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\
  5. Open the “ProviderOrder” key and delete the the words “hgfs” or “vmhgs” or “vmhgfs” present in the string ;
  6. Reboot the server.
Support Articles: http://kb.vmware.com/

Application written with GUPTA 5.2 and published through XenApp 5 returns “Empty Array” error

System Version: XenApp 5 for Windows 2003 – GUPTA 5.2 Application (ported from GUPTA 4.1)

Problem Summary: after an undefined amount of time the application starts to show pop-ups with the following alert: “Empty Array” and then it becomes unusable. OR The application get stuck and becomes unusable.


 

Cause: the problem occurs when using applications (through ICA) written with GUPTA version x .x  and then ported to a new version of GUPTA. In my case the application has been ported from GUPTA version 4.1 to GUPTA version 5.2. The problem is caused by the XenApp’s Seamless Engine, in fact, if the application is not published in seamless mode the problem doesn’t occur.

 The XenApp seamless engine sends some messages to the application called “WM_QUERYDRAGICON”, such messages are used to acquire information about icons associated to the application’s window, but, with some GUPTA applications they bring about unexpected results .In this particular case, the sending of this messages causes the GUPTA application to continually create GDI objects (about 4 per second) without removing them, exhausting quickly the memory space given to the application instance.

 The “Empty Array” message is displayed when the number of GDI objects created by the application reaches 9.999. This value is controlled by the following registry key:

[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Windows]“ GDIProcessHandleQuota”dword 10000

In my case I set the value at 20.000 for testing purposes (that’s why the task manager in the picture shows 19.999 GDI objects), but the default value is 10.000, allowing then for 9.999 GDI objects.

Please note: if the application is written in GUPTA 5.2 from scratch the problem doesn’t occur.

 

Solution: to solve the problem you need to create the following key:

 [HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Citrix/wfshell/TWI]”SeamlessFlags”= dword 0x200 hex

Such key prevents XenApp to send WM_QUERYDRAGICON messages.

 

Support Articlessupport.citrix.com and support.unify.com

XenApp 6 – Disconnecting ICA session attempts to restart the server

System: XenApp 6 on Windows 2008 R2

Event description:

“The attempt by user domain\user to restart/shutdown computer XXXXXXXXXXX failed”

Event id: 1073 Source USER32

This event is generated when a user logs off from an ICA or RDP session. There is no actual attempt to restart or shutdown by a user or apps. The event is generated immediately after the log off.

Workaround:

  • Open the RemoteApp Manager (Under Administrative tools – Remote Desktop Services) as admin user. 
  • Close the RemoteApp Manager Console.
  • Clear the system log from event viewer.
  • Now you should not see the event anymore.
This temporary workaround has been found by Colm Naish:  http://forums.citrix.com/

XenApp 6 How To: force the ICA listener on one NIC in multihomed installations

Sometimes, if you have your XenApp 6 servers in a multihomed environment, you may need to force the ICA listener to listen on only one NIC. For example it might happen that your web interface returns an ICA.launch which includes the wrong IP address.

The following steps shows how to perform the required configuration:

  • Then you have to set the binding order of your network card, putting the one you want to be associaated with the ICA listener at the bottom of the list, to do so:
      1. Open “Control Panel”
      2. Open “Network and Sharing Center”
      3. Click on “Manage Network Connection”
      4. Press “Alt” on your Keyboard
      5. Click on “Advanced” and then on “Advanced Settings”
      6. Put the connection you want to use at the bottom (XenApp 6 binds in descending order)
  • Open “ICA Listener Configuration”

  • Click on “Edit” –> “Network Adapter” and select the adapter you want
  • Click “OK” and close the console.
  • Restart the IMA service

  • Open a command prompt and run “qfarm”, you will see that your server is not listed along the others (here is explained why: http://support.citrix.com/article/CTX126871 )
  • Open the ICA listener console and put all NIC to listen again
  • Restart the IMA service again
  • Run “qfarm” again, now you’ll see that your server is listed twice and the first row contains the IP of the NIC you chose to use for the ICA listener