Optimizing Applications for Windows 2000 Terminal Services and Windows NT Server 4.0,
Terminal Services is a configurable service incorporated into the Microsoft® Windows® 2000 Server operating system that delivers the Windows 2000 Professional desktop and 32-bit Windows-based applications to diverse desktop platforms. Terminal Services can run any well-behaved Windows-based application, but its multiuser nature tends to expose flaws and shortcuts in applications.
This paper provides guidelines for ensuring that applications run well under Windows 2000 Terminal Services. It also provides information on enhancing the user experience by tuning the application for the Terminal Services environment, and taking advantage of the capabilities Terminal Services provides.
© 1999 Microsoft Corporation. All rights reserved.
The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.
This white paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT.
Microsoft, FoxPro, MS-DOS, Win32, Windows, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Other product or company names mentioned herein may be the trademarks of their respective owners.
Microsoft Corporation • One Microsoft Way • Redmond, WA 98052-6399 • USA
09/99
White Paper 1
Introduction 1
Introduction 1
Terminal Services Extends Multiuser Capabilities of Windows 2000 Server 1
Terminal Services Extends Multiuser Capabilities of Windows 2000 Server 1
Comparing Host-Based and Windows 2000-Based Terminal Services 2
Comparing Host-Based and Windows 2000-Based Terminal Services 2
Application Design Considerations 3
Application Design Considerations 3
Proper System Sizing 4
Proper System Sizing 4
Testing in a Typical Terminal Services Configuration 4
Testing in a Typical Terminal Services Configuration 4
Conforming to Core practices 5
Conforming to Core practices 5
Core Practices 5
Core Practices 5
Installation 6
Installation 6
Disallow Installing Multiple Versions of Applications with Shared DLLs 6
Application Installation or Compatibility Scripts 6
Separation of Local and Global Data 7
Separation of Local and Global Data 7
Use the HKEY_LOCAL_MACHINE Properly 7
Do Not Store Local Data Constructs in Global Locations 7
Programming for the Multiuser 7
Programming for the Multiuser 7
Disallowing Multiple Instances of Some Applications 7
Resolve Memory Leaks 7
Do Not Assume Computer Name or IP Address Equates to Single User 8
Do Not Assume the Windows Shell 8
Do Not Assume Persistence of Files in Temp 8
Do Not Modify the GINA 8
Do Not Replace System Files 8
Negotiate Client/Server Connections Inside the System and Network 9
Support Customization Through User Profiles 9
Multilingual and International Usage Scenarios 10
Consider the Peripheral Hardware Environment 10
DCOM Support 10
DCOM Support 10
Optimizing 32-Bit Applications 10
Optimizing 32-Bit Applications 10
Detecting If Terminal Services Are Enabled in Windows 2000 11
Detecting Windows NT Server 4.0, Terminal Server Edition 11
Detecting If Another Instance of an Application Is Running 11
Detecting If an Application Is Running in a Console Session or Remote Session 11
Sending a Message Box from a Service to a Remote Session 11
Tune Background Task Resource Consumption 12
Tune Thread Usage 12
Minimize Splash Screen Usage 13
Minimize the Use of Animation 13
Minimize Direct Video Access 13
Move User Input Routines to Foreground Applications 14
Enable Application Access for All Users 14
Enumerating System Resources 14
Use Classes Where Possible 14
Legacy Applications 14
Legacy Applications 14
Conclusion 16
Conclusion 16
For More Information 16
For More Information 16
APpendix A 16
APpendix A 16
Detecting If Terminal Services Is Enabled 16
Detecting If Terminal Services Is Enabled 16
Simplified Detection for Windows 2000 Only Applications 19
Simplified Detection for Windows 2000 Only Applications 19
Detecting Terminal Services Remote Administration Mode 20
Detecting Terminal Services Remote Administration Mode 20
APPENDIX B 20
APPENDIX B 20
Disallowing Multiple Instances of Some Types of Applications 20
Disallowing Multiple Instances of Some Types of Applications 20
APPENDIX C 22
APPENDIX C 22
Detecting If an Application Is Running in a Console Session or Remote Session. 22
Detecting If an Application Is Running in a Console Session or Remote Session. 22
APPENDIX D 22
APPENDIX D 22
Displaying a Pop-up Message Box in a Remote Session from a Service 22
Displaying a Pop-up Message Box in a Remote Session from a Service 22