What are the changes made in Windows 7 and Windows Vista, that caused many a applications designed for Windows XP to ‘break?’
The changes to Windows were made to improve security, reliability, performance, and usability, and in some cases to remove legacy components that have simply reached the end of their useful life. The most significant changes to application compatibility include:
User Account Control (UAC)/Standard User accounts. In the development of Windows Vista, the engineering team set out to enable most organizations to deploy their users as standard users, and reserve administrator privileges for those who need them—IT professionals. Adopting the principle of what we used to call ‘least-privileged user account’ for client PCs helps prevent intrusive malware, reduces end user configuration errors, and prevents unauthorized applications from being loaded on the machine. In the past, an application had the ability to write to the registry settings, modify the kernel, and other similarly invasive actions. Unfortunately this level of freedom came with a price—namely security. Windows now restricts the parameters of the OS an application is able to change—limiting the impact any malware can have—but applications that were written with this behavior will need to be modified or shimmed to function in Windows 7.
Applications performing hard version checks for the Windows XP operating system version are also affected. While it makes some sense for a developer to lock support and functionality for the application with the version of the operating system the developer originally used in testing, it also assumes that users will never attempt to install that application on a newer OS, or install a newer Service Pack to the same OS. While this is a relatively easy issue to mitigate with compatibility modes or fixes, you will see this surface frequently when coming from Windows XP to Windows 7.
To be sure, the engineering teams responsible for Windows Vista and Windows 7 didn’t take the issue lightly…