What are the main differences between programming for Windows XP and for Vista?

windows-vista, windows-xp

Solution

User Interface

Looking at the Windows Vista User Experience Guidelines you can see that they have changed many UI elements, which you should be aware of. Some major things to take note of:

- Larger icons

- New font (Which affects some custom UI constistency)

- New dialog box features (task dialogs)

- Altered common dialogs (like File Open, Save As, etc.)

- Dialog text style and tone, and look and feel

- New Aero Wizards

- Redesigned toolbars

- Better notification UI

- New recommended method of including a search control

- Glass

64-bit

Vista has a 64-bit edition, and although XP did too, your users are more likely to use Vista 64 than XP 64. Now you have to deal with:

- Registry virtualization

- Registry redirection (Wow6432Node)

- Registry reflection

- Digital signatures for kernel modules

- MSI installers have new properties to deal with

UAC

User Account Control vastly affects the default permissions that your application has when interacting with the OS.

- How UAC works and affects your application (also see the requirements doc)

- Installers have to deal with UAC

New APIs

There are new APIs which are targeted at either new methods of application construction or allowing new functionality:

- Cryptography API: Next Generation (CNG)

- Extensible Application Markup Language (XAML)

- Windows Communication Foundation (WCF)

- Windows Workflow Foundation (WF)

- And many more smaller ones

Installers

Because installations can only use common runtimes they install after a transaction has completed, custom actions will fail if your custom action dll requires the Visual C++ runtimes above the VS 2005 CRT (non-SP1).

Problem

From a desktop application developer point of view, is there any difference between developing for Windows XP and developing for Windows Vista?

Original source