Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have MinGW and MSYS installed and never really cared about how the binaries work. However, today I opened Process Explorer and realized that I have some virtualized processes:

Process list

I know that usually make/gcc/sh/mintty are for POSIX/unix-like systems, however I thought that the MinGW/MSYS projects would provide native executables. Virtualized is usually a term I associate with virtual machines and it confuses me a little bit. The task manager actually calls the according column "UAC virtualization".

So what does the virtualized flag in Windows mean? Is it some kind of compatibility layer for pre Vista executables?

share|improve this question
    
Short answer: yes, it's a compatibility layer for pre-Vista executables. (Slightly longer answer: because many such executables assumed the process would always have administrator privilege, which in Vista was much less likely to be true.) –  Harry Johnston Oct 20 '12 at 22:06
add comment

2 Answers

up vote 3 down vote accepted

Its basically a file system and registry 'wrapper' that redirects file write attempts to places you shouldn't go to, for example trying to write to C:\program files\appname\settings.ini would redirect the write to C:\Users\username\AppData\Local\VirtualStore\Program Files\appname\settings.ini.

I'd guess most of these applications are set up to write to programme files and are getting shifted to %appdata% instead.

I do believe 32 bit applications on 64 bit windows would use this as well, as a way to redirect program files(x86) to C:\Program Files\

share|improve this answer
1  
Nope. There is no redirection of "program files(x86)" to "Program Files". There is redirection from C:\Windows\System32 to C:\Windows\SysWOW64, but in fact this is refer to WOW64 redirector, not to Virtualization redirector. –  Maximus Oct 20 '12 at 11:56
add comment

Journeyman Geek explains what is virtualization. I'll explain how Windows determine need of virtualization.

OS looks in application manifest file (or PE-resource) and if manifest is not found at all or does not have proper compatibility section - Windows assumes that application is "old" and enables virtualization.

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
 <application>
   <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
   <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
 </application>
</compatibility>

PS. Virtualization works for registry (sub)keys like HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.