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

[{'answer_id': 22684, 'author': 'Mark Ingram', 'author_id': 986, 'author_profile': 'https://Stackoverflow.com/users/986', 'pm_score': 3, 'selected': False, 'text': '<p>Do not <strong><em>ever</em></strong> assume your user has access to certain key areas of the disc (i.e. program files, windows directory etc). Instead the default user account will only be able to write to a small section of their application data. Also, they won\'t be able to write to global areas of the registry - only the current user section.</p>\n\n<p>You can of course elevate their privileges, but that in itself is a task.</p>\n\n<p>Generally programming for Vista is the same as XP, it\'s just the new account restrictions you have to be wary of.</p>\n\n<p>Have a look at this page with regards to making your application "UAC aware"</p>\n\n<p><a href="http://www.codeproject.com/KB/vista-security/MakingAppsUACAware.aspx" rel="nofollow noreferrer">http://www.codeproject.com/KB/vista-security/MakingAppsUACAware.aspx</a></p>\n'}, {'answer_id': 22690, 'author': 'TheSmurf', 'author_id': 1975282, 'author_profile': 'https://Stackoverflow.com/users/1975282', 'pm_score': 1, 'selected': False, 'text': "<p>There can be, but that's a conscious choice you make as the developer. You can use new Vista stuff, like UAC and CommandLinks and Aero and so forth. But you don't have to (even UAC can be programmed around -- just don't do anything that needs admin privileges). If you choose to ignore all of the Vista stuff, then there's absolutely no difference between the two.</p>\n\n<p>If you do want to include that stuff in your app, it makes a difference. But I'd say not a huge one. And if you abstract away the differences (for example, write your own function that shows a TaskDialog for Vista, but which dumbs down the input you give it into a MesssageBox on XP), then you'll only be writing against your own code, and the differences will seem like almost nothing. </p>\n\n<p>Also, a lot of Vista's new stuff (for example, UAC or Aero) is stuff that you worry about once, when you create the first piece of functionality that uses it, get it working, and then never think about again while you're developing the app.</p>\n"}, {'answer_id': 22731, 'author': 'Chris', 'author_id': 2134, 'author_profile': 'https://Stackoverflow.com/users/2134', 'pm_score': 5, 'selected': True, 'text': '<p><strong>User Interface</strong></p>\n\n<p>Looking at the <a href="http://msdn.microsoft.com/en-us/library/aa511258.aspx" rel="nofollow noreferrer">Windows Vista User Experience Guidelines</a> you can see that they have changed many UI elements, which you should be aware of.  Some major things to take note of:</p>\n\n<ul>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa511280.aspx" rel="nofollow noreferrer">Larger icons</a></li>\n<li>New <a href="http://msdn.microsoft.com/en-us/library/aa511295.aspx" rel="nofollow noreferrer">font</a> (Which affects some custom UI constistency)</li>\n<li>New <a href="http://msdn.microsoft.com/en-us/library/aa511268.aspx" rel="nofollow noreferrer">dialog box features</a>  (<a href="http://msdn.microsoft.com/en-us/library/bb787471%28VS.85%29.aspx" rel="nofollow noreferrer">task dialogs</a>)</li>\n<li>Altered <a href="http://msdn.microsoft.com/en-us/library/aa511293.aspx" rel="nofollow noreferrer">common dialogs</a> (like File Open, Save As, etc.)</li>\n<li>Dialog text <a href="http://msdn.microsoft.com/en-us/library/aa974175.aspx" rel="nofollow noreferrer">style and tone</a>, and <a href="http://msdn.microsoft.com/en-us/library/aa974176.aspx" rel="nofollow noreferrer">look and feel</a></li>\n<li>New <a href="http://msdn.microsoft.com/en-us/library/aa511302.aspx" rel="nofollow noreferrer">Aero Wizards</a></li>\n<li>Redesigned <a href="http://msdn.microsoft.com/en-us/library/aa511500.aspx" rel="nofollow noreferrer">toolbars</a></li>\n<li>Better <a href="http://msdn.microsoft.com/en-us/library/aa511297.aspx" rel="nofollow noreferrer">notification UI</a></li>\n<li>New recommended method of including a <a href="http://msdn.microsoft.com/en-us/library/aa511327.aspx#search" rel="nofollow noreferrer">search control</a></li>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa511327.aspx#frames" rel="nofollow noreferrer">Glass</a></li>\n</ul>\n\n<p><strong>64-bit</strong></p>\n\n<p>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:</p>\n\n<ul>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa965884.aspx" rel="nofollow noreferrer">Registry virtualization</a></li>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa384232%28VS.85%29.aspx" rel="nofollow noreferrer">Registry redirection</a> (<a href="http://msdn.microsoft.com/en-us/library/ms724072%28VS.85%29.aspx" rel="nofollow noreferrer">Wow6432Node</a>)</li>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa384235.aspx" rel="nofollow noreferrer">Registry reflection</a></li>\n<li><a href="http://www.microsoft.com/whdc/winlogo/drvsign/kmsigning.mspx" rel="nofollow noreferrer">Digital signatures for kernel modules</a></li>\n<li>MSI installers have <a href="http://blogs.msdn.com/heaths/archive/2005/10/24/windows-installer-on-64-bit-platforms.aspx" rel="nofollow noreferrer">new properties</a> to deal with</li>\n</ul>\n\n<p><strong>UAC</strong></p>\n\n<p><a href="http://en.wikipedia.org/wiki/User_Account_Control" rel="nofollow noreferrer">User Account Control</a> vastly affects the default permissions that your application has when interacting with the OS.</p>\n\n<ul>\n<li><a href="http://msdn.microsoft.com/en-us/library/bb756996.aspx" rel="nofollow noreferrer">How UAC works and affects your application</a> (also see the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=BA73B169-A648-49AF-BC5E-A2EEBB74C16B&amp;displaylang=en" rel="nofollow noreferrer">requirements doc</a>)</li>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa372468%28VS.85%29.aspx" rel="nofollow noreferrer">Installers have to deal with UAC</a></li>\n</ul>\n\n<p><strong>New APIs</strong></p>\n\n<p>There are new APIs which are targeted at either new methods of application construction or allowing new functionality:</p>\n\n<ul>\n<li><a href="http://msdn.microsoft.com/en-us/library/aa376210%28VS.85%29.aspx" rel="nofollow noreferrer">Cryptography API: Next Generation</a> (CNG)</li>\n<li><a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language" rel="nofollow noreferrer">Extensible Application Markup Language</a> (XAML)</li>\n<li><a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" rel="nofollow noreferrer">Windows Communication Foundation</a> (WCF)</li>\n<li><a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx" rel="nofollow noreferrer">Windows Workflow Foundation</a> (WF)</li>\n<li>And <a href="http://msdn.microsoft.com/en-us/library/aa383874.aspx" rel="nofollow noreferrer">many more smaller ones</a></li>\n</ul>\n\n<p><strong>Installers</strong></p>\n\n<p>Because installations can only use common runtimes they install after a transaction has completed, <a href="http://blogs.msdn.com/astebner/archive/2007/05/20/2760317.aspx" rel="nofollow noreferrer">custom actions</a> <a href="http://blogs.msdn.com/astebner/archive/2007/01/09/problems-with-custom-actions-that-depend-on-the-visual-c-8-0-runtime-files-on-windows-vista.aspx" rel="nofollow noreferrer">will fail</a> if your custom action dll requires the Visual C++ runtimes above the VS 2005 CRT (non-SP1).</p>\n'}, {'answer_id': 22761, 'author': 'Nick', 'author_id': 1490, 'author_profile': 'https://Stackoverflow.com/users/1490', 'pm_score': 0, 'selected': False, 'text': '<p>By far the most painful part of moving an application from XP to Vista (from my point of view) is dealing with the numerous services and IPv6 stuff that uses ports which were previously free, and dealing with the Wireless Provisioning -> Native WiFi transition.</p>\n\n<p>The UAC stuff is basically a moot point; there is very little the application developer needs to do.</p>\n'}]
['https://Stackoverflow.com/questions/22674', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/184/']