Why Migrating Legacy Apps to Windows 10 is Difficult

Microsoft has made the Operating System migration simple to upgrade from Windows 7 to Windows 10. Yet there are many applications that are simple to install on older Windows versions but will have conflicts on Windows 10. The reasons are quite simple, and yet not so easy to overcome.

Windows Background

Windows was originally a 16-bit environment and ran only on 16-bit software. With time the Windows operating system went to 32-bit and then 64-bit. The 32-bit version of Windows could run both 16-bit and 32-bit applications. However, with Windows 64-bit OS versions, they can run 32-bit and 64-bit programs, but not 16-bit applications (http://support.microsoft.com/kb/896458). Some applications installers do include both 16-bit and 32-bit versions and these applications can work on 64-bit operating systems. But if the application installer is 16-bit or the application is 16-bit, then these applications can no longer work on 64-bit systems. In addition, applications may appear to be 32-bit with a Win32 GUI and all the window dressing of a 32-bit Windows application, but some 32-bit applications call 16-bit components. Finally, many 32-bit legacy applications have hardcoded paths and shortcuts that are now incompatible with newer 64-bit Windows versions. What changes caused these incompatibilities?

Changes to the Windows Operating System

Microsoft puts up the following barriers in Windows 7 and later versions that may be unexpected for applications that are developed only for Win XP or earlier:

  • UAC– Win XP allows lower elevation processes to control higher-elevation processes through Message passing. This is illegal in Win 7 and later versions unless UAC is turned off.
  • Service-hardening– Win XP allows user processes to mingle with service processes in the first user session (session 0). This allows the service-processes to interact with user processes (and vice versa) using intra-session function calls. With Win 7 and later, these processes must be reprogrammed with inter-session calls.
  • Kernel-hardening– Win XP allows kernel drivers to replace functions in the kernel syscall table with their own functions. Win 7 and later Win versions make the syscall table read-only. Any prior kernel driver that relies on the ability to write the syscall table should, therefore, fail in Win 7 and later Win versions.
  • Kernel-anti-tampering– Win 8 and later versions require that kernel drivers are digitally signed in such a way that is approved by Microsoft and can be verified by Windows kernel. Drivers that do not meet this requirement are expected to fail to load.
  • Deprecated functions– There are functions that are deprecated but still available in Win 7. The farther going past Win 7, the higher the chance that these functions are dropped completely. This is not a blocker but is a risk to be reckoned with.
  • 16-bit incompatibility– Windows allows 16-bit applications to run on 32-bit Win versions but not on 64-bit ones.
  • 32-bit incompatibility– For 32-bit applications that contain a 32-bit kernel driver, this driver will not be compatible with 64-bit systems. These tend to be more hardware related but can affect some applications as well.

It is due to these fundamental changes to the Windows operating system architecture that make migrating Legacy applications difficult. To explore how Cloudpaging can overcome these migration issues, read “How Cloudpaging Improves the Migration of Legacy Apps to Windows 10.”


About the Author:

Robert joined Numecent's predecessor, Endeavors Technology, in 2000 as a principal software engineer. His knowledge and experience in application virtualizing technology are extensive with patents in the rule-based management of access to applications. US patent #8,261,345 (Rule-based Application Access Management).