Click to Rate and Give Feedback
Tips
Do you know what tools you'll need to use to prepare and deploy Windows Vista to systems throughout your environment? Here's an overview of the tools you'll need, and the ones you can forget about. ...

Read more!

You can easily prevent costly queries from executing by configuring the query governor. Find out how to do this in just a few simple steps. ...

Read more!

If you want external users or mail systems to be able to send mail to an address within your organization and then have Exchange forward this mail to an external mailbox, we list the six easy steps to get it done. ...

Read more!

When you create a new GPO in the GPMC, you are given the opportunity to base the new GPO on a starter GPO. Because the settings of the starter GPO are then imported into the new GPO, you can use a starter GPO to define the base configuration settings for a new GPO. Here are the steps you need to follow to create a starter GPO. ...

Read more!

You can pin files and resources to the Taskbar for easy access to the documents you use most often. Find out how. ...

Read more!

Related Articles

Raymond Chen discusses the difficult job of satisfying audiophiles and those who just want the sound to work.

Raymond Chen

TechNet Magazine May 2009

...

Read more!

Microsoft Bob is a lot more prevalent than you might think. Raymond Chen explains how Microsoft Bob made its way into millions of homes.

Raymond Chen

TechNet Magazine July 2008

...

Read more!

The Application Compatibility Toolkit (ACT) lets users know whether applications are compatible with a new version of Windows before deployment and can also help them determine how an operating system update will impact these applications. By taking a look under the hood of the Application Compatibility Toolkit, readers are better able to evaluate the potential of each tool and invest in them appropriately.

Chris Corio and Chris Jackson

TechNet Magazine ...

Read more!

Raymond Chen explains how a bit of diagnostic code unexpectedly brought the Windows 95 build to crawl.

Raymond Chen

TechNet Magazine September 2008

...

Read more!

Raymond Chen explains why Windows can but chooses not to replace a file that is currently in use.

Raymond Chen

TechNet Magazine November 2008

...

Read more!

Also by this Author

Raymond Chen explains how a bit of diagnostic code unexpectedly brought the Windows 95 build to crawl.

Raymond Chen

TechNet Magazine September 2008

...

Read more!

Raymond Chen explains why Windows can but chooses not to replace a file that is currently in use.

Raymond Chen

TechNet Magazine November 2008

...

Read more!

Raymond Chen looks at the evolution of the Alt+Tab hotkey and how the Alt+Esc hotkey has remained unscathed.

Raymond Chen

TechNet Magazine March 2009

...

Read more!

Raymond Chen discusses the difficult job of satisfying audiophiles and those who just want the sound to work.

Raymond Chen

TechNet Magazine May 2009

...

Read more!

Raymond Chen discusses the intriguing backstory of how naming conventions for non-final releases have changed. And he gives a gentle plea for companies to take beta testing more seriously.

Raymond Chen

TechNet Magazine March 2008

...

Read more!

Popular Articles

Consolidating servers onto fewer physical machines has many advantages, but it is extremely important that you plan for your systems to be highly available. Here’s a guide to using Windows Server 2008 Failover Clustering to bring high availability to your Hyper-V virtual machines.

Steven Ekren

TechNet Magazine October 2008

...

Read more!

The upcoming release of Microsoft Identity Lifecycle Manager “2” offers many new features and enhancements. Explore the new portal experience and find out how you can cut costs with self-service tools, increase security compliance with business process modeling, and reduce development time with simplified development tools.

Aung Oo

TechNet Magazine January 2009

...

Read more!

Security principals underlie so much of Windows security that it is essential for any administrator to have at least a basic understanding of how the various types of Security principals work and how they are used. Here's what you need to know.

Jesper M. Johansson

TechNet Magazine January 2009

...

Read more!

Without too much effort, you can deploy a terminal server to host the applications you need in your environment. But there are some important decisions you’ll need to make to ensure your implementation meets user expectations. Greg Shields discusses the various options you have and explains how they will affect you.

Greg Shields

TechNet Magazine January 2009

...

Read more!

Learn how you can implement error-handling in Windows PowerShell.

Don Jones

TechNet Magazine January 2009

...

Read more!

Our Blog

NAP monitors the health of specified computers when they attempt to connect to a network and includes a number of mechanisms to enforce health requirements. In this article, Geek of All Trades Greg Shields gives readers an overview of these enforcement mechanisms and, as an example, takes a closer look at setting ...

Read more!

Use Windows PowerShell to Manage Virtual Machines Here are a few examples of how you can use Windows PowerShell scripts to manage virtual machines running on a Server Core installation. Note that these scripts are presented as samples and may need to be customized to work in your environment.

Create a New ...

Read more!

Disabling an Unused Part of Group Policy Objects One way to disable a policy is to disable an unused part of the GPO. By disabling part of a policy that isn’t used, the application of GPOs and security will be faster.

Administer Windows Server 2008 Server Core from the Command Prompt ...

Read more!

In the August 2008 issue of TechNet Magazine, Paul Randal wrote an article Top Tips for Effective Database Maintenance.  It was geared toward "involuntary  DBAs" (IT pros who inadvertently wind up responsible for a SQL Server instance).  The article had a great response from our readers so Paul has written another ...

Read more!

Microsoft Forefront is designed to deliver an integrated security solution that makes it much easier to deploy and manage security across an organization’s IT infrastructure. In this, our annual security issue, we feature two articles that describe how Forefront Security protects instant messaging and e-mail.

Protect ...

Read more!

Windows Confidential Handling Compatibility Hacks
Raymond Chen


THERE WAS A PROGRAM written for Windows® 3.1 that opened the Printers Control Panel by looking for the Control Panel window, accessing the File menu, and searching for an item called Printer. In Windows 95, the Control Panel didn't have a Printer option under File. As a result, when run on Windows 95, this program would post a garbage command message to the Control Panel. To address this problem, Windows 95 created a decoy Control Panel window for the program to find. When the program posted the message to the decoy, the Printers folder opened.
Some people argue that Windows 3.1 should have detected that the program was making bad assumptions about the Control Panel and displayed a warning. That way, the author of the program would have seen the warning and fixed the problem before releasing the product. But detecting the intent of a chunk of code requires a degree of analysis that ventures into the realm of artificial intelligence. Essentially, Windows 3.1 would have had to detect that the program was doing a strcmp for Printers, analyze the particular strcmp, and decide if it were bad. But that only catches the Printers case. How many compatibility checks do you want the system to perform? And what about false positives?
Another argument is that Windows 95 should have responded to this bad assumption with a warning dialog that said "Program XYZ is doing something bad." But for Control Panel to know what posted the garbage message, the detection would have to be put into the window manager. This creates a fragile coupling between two components-Control Panel and the window manager. And, again, this only addresses one case. Do you want the window manager to be brittlely coupled to all the other components in the system?
Providing a generic message, without naming the specific application would be easier. But that's not a good solution, either. A vague error message is no better than no error message at all. What's more, this dialog would in all likelihood be ignored by the user-especially since it wouldn't recommend a specific course of action. Users would perceive the dialog box as an annoyance. This is a very important point. It is essential that any error message be actionable. If the user knows how to react to the warning, the dialog becomes useful.
  
Another problem is that a dialog box creates a point of reentrancy due to the dialog loop. This is a technical problem. Unexpected reentrancy is a major source of bugs in UI programming. What's more, the Control Panel itself may be in a modal state and displaying a dialog box causes the modal structure to fall apart.
A dialog box also creates a new localization burden. If a dialog box is written for every compatibility hack, there will be hundreds of them scattered throughout the system. Each would have to be translated into the 33 languages for which Windows provides full translations.
Finally, consider the reaction from competitors when their product results in one of these dialog boxes. They'd say things like "Microsoft is blaming other people for its own buggy operating system" and "Microsoft is intentionally making our program look bad." I'm not exaggerating. There have been companies who complained to Congress that Microsoft was maliciously targeting and disabling their software. Upon further inspection, it was found that there were bugs in their programs. Frankly, it's better just to fix their bug for them than endure a lengthy Congressional investigation.
As a result, the current versions of Windows only display a warning dialog when a program is so incompatible with Windows that it cannot run at all or that it runs with severe limitations. And even in that case, Microsoft tries to work with the vendor to ensure that no customer is left stranded. After all, people want to run programs on the operating systems they buy. If a program doesn't work, you don't care whose fault it is-you just want to get your work done.

Raymond Chen's Web site, The Old New Thing, deals with Windows history and Win32 programming. He is working on a book, coincidentally also titled The Old New Thing (Addison-Wesley, 2007).
© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.
Page view tracker