O que é um processo virtualizado?

10

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

Lista de processos

Eu sei que geralmente make / gcc / sh / mintty é para sistemas tipo POSIX / unix, no entanto, pensei que os projetos MinGW / MSYS forneceriam executáveis ​​nativos. Virtualizado é geralmente um termo que associo a máquinas virtuais e me confunde um pouco. Na verdade, o gerenciador de tarefas chama a coluna "virtualização de UAC" correspondente.

Então, o que significa o sinalizador virtualizado no Windows? É algum tipo de camada de compatibilidade para os executáveis ​​anteriores ao Vista?

Zeta
fonte
Resposta curta: sim, é uma camada de compatibilidade para executáveis ​​anteriores ao Vista. (Um pouco mais resposta:., Porque muitos desses executáveis assumiu o processo sempre teria privilégio de administrador, que no Vista era muito menos provável que seja verdade)
Harry Johnston

Respostas:

8

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

Os aplicativos gravados com a suposição de que o usuário estará executando com privilégios de administrador tiveram problemas nas versões anteriores do Windows, quando executados a partir de contas limitadas, geralmente porque tentaram gravar em diretórios de todo o computador ou do sistema (como Arquivos de Programas) ou chaves do Registro (notavelmente HKLM). O UAC tenta aliviar isso usando a virtualização de arquivos e registros, que redireciona gravações (e leituras subsequentes) para um local por usuário no perfil do usuário.

Por exemplo, se um aplicativo tentar gravar em um diretório como "C: \ Arquivos de Programas \ appname \ settings.ini" para o qual o usuário não tenha permissão de gravação, a gravação será redirecionada para "C: \ Users \ nome de usuário \ AppData \ Local \ VirtualStore \ Arquivos de Programas \ appname \ settings.ini ". O recurso de redirecionamento é fornecido apenas para aplicativos de 32 bits não elevados e somente se eles não incluírem um manifesto que solicite privilégios específicos.

Journeyman Geek
fonte
1
Não. Não há redirecionamento de "arquivos de programa (x86)" para "arquivos de programa". Há redirecionamento de C:\Windows\System32para C:\Windows\SysWOW64, mas, na verdade, isso se refere ao redirecionador WOW64, não ao redirecionador de virtualização.
Maximus
7

O 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 foi encontrado ou não possui a compatibilityseção adequada - o Windows assume que o aplicativo é "antigo" e habilita 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. Virtualização obras para Registro (sub) teclas como HKEY_LOCAL_MACHINEa HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

Maximus
fonte