O que é um processo virtualizado?

9

Eu tenho o MinGW e o MSYS instalados e nunca me importei realmente com o funcionamento dos binários. No entanto, hoje abri o Process Explorer e percebi que tenho alguns virtualizados processos:

Euseiquenormalmenteo/gcc/sh/minttyéfeitoparasistemasPOSIX/unix-like,noentantoeupenseiqueosprojetosMinGW/MSYSforneceriamexecutáveisnativos.Virtualizadogeralmenteéumtermoqueassocioamáquinasvirtuaisemeconfundeumpouco.Ogerenciadordetarefas,naverdade,chamaacolunacorrespondentede"virtualização UAC".

Então, o que significa o sinalizador virtualizado no Windows? É algum tipo de camada de compatibilidade para executáveis pré Vista?

    
por Zeta 20.10.2012 / 12:55

2 respostas

8

É basicamente um sistema de arquivos e registro 'wrapper' que redireciona as tentativas de gravação de arquivos se o usuário não tiver as permissões de gravação corretas, veja o artigo da Wikipedia sobre o UAC para mais informações :

Applications written with the assumption that the user will be running with administrator privileges experienced problems in earlier versions of Windows when run from limited user accounts, often because they attempted to write to machine-wide or system directories (such as Program Files) or registry keys (notably HKLM). UAC attempts to alleviate this using File and Registry Virtualization, which redirects writes (and subsequent reads) to a per-user location within the user's profile.

For example, if an application attempts to write to a directory such as "C:\Program Files\appname\settings.ini" to which the user does not have write permission, the write will be redirected to "C:\Users\username\AppData\Local\VirtualStore\Program Files\appname\settings.ini". The redirection feature is only provided for non-elevated 32-bit applications, and only if they do not include a manifest that requests specific privileges.

    
por 20.10.2012 / 13:08
7

Journeyman Geek explica o que é virtualização. Vou explicar como o Windows determina a necessidade de virtualização.

O SO procura no arquivo de manifesto do aplicativo (ou recurso PE) e se o manifesto não for encontrado ou não tiver a seção compatibility adequada - o Windows assume que o aplicativo é "antigo" e permite a virtualização.

<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. A virtualização funciona para chaves de registro (sub) como HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE .

    
por 20.10.2012 / 13:53