Change in the TSAware flag behavior in .NET Framework 3.5 SP1
This article describes changes in the TSAware flag behavior in Microsoft .NET Framework 3.5 Service Pack 1 (SP1).
Original product version: .Net 3.5 Framework Service Pack 1
Original KB number: 2229865
Changes in the TSAware behavior
From .Net 3.5 Framework SP1 onwards, the /TSAWARE flag is set to ON by default in the PE header of the image produced by the included C# and Visual Basic. NET compilers. It can be verified by running dumpbin.exe on any C#/VB.net assembly built by using those compilers as follows:
Dumpbin /Headers <assembly_name>.exe(dll)
8540 DLL characteristics Dynamic base NX compatible No structured exception handler Terminal Server Aware
Dumpbin.exe is included in the Windows SDK and is also installed with Visual Studio.
For Visual C++ projects, this flag can be edited through Visual Studio integrated development environment (IDE) as follows:
- Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
- Select the Linker folder.
- Select the System property page.
- Modify the Terminal Server property.
As per the /TSAWARE documentation, when an application is not Terminal Server aware (also known as a legacy application), Terminal Server makes certain modifications to the legacy application to make it work properly in a multiuser environment. For example, Terminal Server will create a virtual Windows folder, such that each user gets a Windows folder instead of getting the system's Windows directory. It gives users access to their own INI files. In addition, Terminal Server makes some adjustments to the registry for a legacy application. These modifications slow the loading of the legacy application on Terminal Server.
It is recommended that you update your application to be TSAWARE and not modify this flag.