An Uniface application that is running on Terminal Server or Citrix may close unexpectedly in Windows Server 2008 R2
Author: firstname.lastname@example.org (diseli)Daniel Iseli
Running an Uniface application (any version) remotely on Terminal Server(Remote Desktop) or Citrix server that is running Windows Server 2008 R2, the application may close unexpectedly (crash). The problem can occur when opening (e.g.) a file selection box (using the filebox Proc statement) or a form that is displaying a HTML widget (only applicable for Uniface 9.6 and 9.7).
This issue occurs because of a problem in the Windows Terminal Server module Tsappcmd.dll. More details about this problem can be found (e.g.) here:
- Microsoft Knowledge Base article 2498855 - An Office 2007 or Office 2003 application that is running on an RD Session Host server may close unexpectedly in Windows Server 2008 R2
- Some Multi-threaded terminal server applications crashes in Win 2008 R2
(see Microsoft Knowledge Base article 2498855)
Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Uniface or Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.To work around this issue, use one of the following methods.
Disable DEP for the application in question. To do this, follow these steps:
- In Control Panel, click System, and then click Advanced system settings. The System Properties dialog appears.
- In the Performance section, click Settings. The Performance Options dialog opens.
- On the Data Execution Prevention tab, select Turn on DEP for all programs and services except those I select, and then click Add.
- Select the executable file of the problematic application.
- Click Apply, and then restart the system.
Disable IAT. To do this, follow these steps:
- Start Registry Editor. To do this, click Start, click Run, type regedit, and then click OK.
- Locate and then right-click the following registry subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
- Click New, and then click DWORD (32bit) Value.
- Type IAT to name the new DWORD value, and then press Enter.
- Right-click IAT, click Modify, and then type 1 in the Value data box.
- Restart the system.
UPDATE: The above described issue should not occur anymore with the HTML widget when using version 9.7.02 (and higher). Please note that the DEP policy will be enabled automatically when the HTML widget is initialized. And this will override the workaround described in method 1. Additional information can be found here.