Tuesday, May 5, 2009

How XP Mode works

As promised, some details about VMSal – executable that is used to run published applications… I investigated little bit today and here comes first information :)

VMSal is used to run applications that are published from within virtual machines – and functionality called RAIL is used to achieve that – this feature is better known as RemoteApp in Terminal Services.

It is no surprise that Microsoft just re-used already existing functionality – I would be really surprised if they would try to re-invent the wheel (but you never know – just have a look at Live Mesh and SkyDrive, or Live Mesh remote desktop functionality).

Well, it IS based on TS technology :) You can easily discover following registry keys on virtual machines with RAIL installed:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TsAppAllowList\Applications

Under this key you can find regular settings of TSRemoteApp:


Name of that key is identifier of published application. BTW I was really surprised by ShowInTSWA – which is used to show published application in Terminal Services Web Access :) I want to play a bit with it and see if I can publish these applications to TS 2008 :)

When Windows 7 tries to run these remote applications, it is using (already mentioned) executable called VMSal.exe, that can be found in %WinDir%\System32 folder. This executable accepts 3 arguments:

  • Name of virtual machine
  • ID of application
  • Name of application (?) – not sure where is this one used, however it can be any string

ID of application is prefixed by “||”, so for example “||fa7d9”.

If you have a look at picture above, if I would like to run Internet Explorer, I can just call following executable:

“%WinDir%\System32\vmsal.exe” "Virtual Windows XP" "||IE" "IE"

That will automatically run “IE” as specified in virtual machine Virtual Windows XP.

So if you want to easily transfer your settings, simply backup all .lnk files on your Windows 7 and all RAIL registry keys from your virtual machine and that’s it. You can easily automate creation of these applications – I will maybe even build small script that will automatically give you all published applications based on your Windows XP start menu…



frank said...

It looks like when you add a shortcut in the XP machine start menu for All Users, it will appear as published in Win 7... Things like mstsc and explorer are also in all users start menu, but excluded from publishing by this key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtual Machine\VPCVAppExcludeList

Martin Zugec said...

Hi Frank,

yep, all users start menu is official way how to publish applications, however I don't really like it.

I am thinking about writing small application that will automatically create published applications and start menu for you - using right-click context menu (right-click -> Create RemoteApp shortcut)

Thanks for Exclude list information, didn't know that (and it makes sense)