Questão O que é um processo virtualizado?


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

Process list

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

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


8


origem


Resposta curta: sim, é uma camada de compatibilidade para executáveis ​​pré-vista. (Resposta ligeiramente mais longa: porque muitos executáveis ​​assumiram que o processo sempre teria privilégios de administrador, o que no Vista era muito menos provável de ser verdade.) - Harry Johnston


Respostas:


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

Aplicativos escritos com a suposição de que o usuário estará executando com privilégios de administrador tiveram problemas em versões anteriores do Windows quando executados a partir de contas de usuário limitadas, geralmente porque tentavam gravar em pastas de sistema ou de sistema (como Arquivos de Programas) ou chaves do Registro (nomeadamente HKLM). O UAC tenta aliviar isso usando a Virtualização de Arquivo e Registro, que redireciona gravações (e leituras subseqüentes) 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", no qual o usuário não tem permissão de gravação, a gravação será redirecionada para "C: \ Users \ username". \ 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.


7



Não. Não há redirecionamento de "arquivos de programa (x86)" para "Arquivos de Programas". Há redirecionamento de C:\Windows\System32 para C:\Windows\SysWOW64, mas na verdade isso é se referir ao redirecionador WOW64, não ao redirecionador de virtualização. - Maximus


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

OS procura no arquivo de manifesto do aplicativo (ou recurso PE) e se o manifesto não for encontrado ou não tiver compatibility seção - o Windows considera 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 para HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.


7