Windows XP Mode Internals – Part 2 (Application Publishing Magic)

As mentioned in that boring overview yesterday, Windows XP Mode (XPM) utilizes some key RDP (6.1+) technologies to enable seamless virtual application use in Windows 7. More specifically, Remote Applications and Application Publishing.

For those not Terminal Services wizards, these technologies may sound new. Application Publishing enables you to “install” an application on a client machine – at least as far as the user is concerned. Shortcuts and file-type associations are set up, just as a local installation would, but when the application is invoked it’s started on a server somewhere within your infrastructure. The Remote Applications piece then kicks in and draws the client UI in a very convincing manner.

XPM eliminates the publishing step in the traditional Terminal Services model by incorporating monitoring logic within the Virtual Machine Services components installed on Windows XP for you, at first run. This component, amongst other things, monitors the (All Users) Start Menu for shortcut additions and deletions. For example, after detecting an added shortcut XPM adds the application to the Remote Applications white-list, nabs its icon, and performs some other internal house keeping tasks before passing the baton to the host operating system for addition to the Virtual Applications list in the Start Menu.

In the video below, I demonstrate just that with Internet Explorer 6.

[flv: 720 450]

As shown in the video, one of the (current?) limitations with XPM (as a result of client Terminal Server licensing) is that only one user or channel can be open at any given time. This means you cannot execute Internet Explorer 6 while running maintenance tasks within the virtual machine, like installing updates from Windows Update. For the tinker tots, however, you may want to patch the Windows XP guest to allow simultaneous RDP sessions. Doing so, of course, is a violation of a few EULAs but it’s worth the gain in knowledge. It’ll be our little secret, okay?