Qu'est-ce qu'un processus virtualisé?

10

J'ai installé MinGW et MSYS et je ne me suis jamais vraiment soucié du fonctionnement des binaires. Cependant, aujourd'hui, j'ai ouvert Process Explorer et j'ai réalisé que j'avais des processus virtualisés :

Liste des processus

Je sais que le plus souvent make / gcc / sh / mintty est pour les systèmes de type POSIX / unix, cependant je pensais que les projets MinGW / MSYS fourniraient des exécutables natifs. Virtualisé est généralement un terme que j'associe aux machines virtuelles et cela m'embrouille un peu. Le gestionnaire de tâches appelle en fait la colonne correspondante "Virtualisation UAC".

Alors, que signifie le drapeau virtualisé dans Windows? Est-ce une sorte de couche de compatibilité pour les exécutables pré Vista?

Zeta
la source
Réponse courte: oui, c'est une couche de compatibilité pour les exécutables pré-Vista. (Réponse légèrement plus longue: parce que beaucoup de ces exécutables supposaient que le processus aurait toujours des privilèges d'administrateur, ce qui dans Vista était beaucoup moins susceptible d'être vrai.)
Harry Johnston

Réponses:

8

Il s'agit essentiellement d'un système de fichiers et d'un «wrapper» de registre qui redirige les tentatives d'écriture de fichiers si l'utilisateur n'a pas les autorisations d'écriture correctes, consultez l'article Wikipedia sur l'UAC pour plus d'informations :

Les applications écrites avec l'hypothèse que l'utilisateur s'exécutera avec des privilèges d'administrateur ont rencontré des problèmes dans les versions antérieures de Windows lorsqu'elles étaient exécutées à partir de comptes d'utilisateurs limités, souvent parce qu'elles tentaient d'écrire dans des répertoires système ou à l'échelle de la machine (tels que Program Files) ou des clés de registre (notamment HKLM). UAC tente de remédier à cela à l'aide de la virtualisation de fichiers et de registres, qui redirige les écritures (et les lectures suivantes) vers un emplacement par utilisateur dans le profil de l'utilisateur.

Par exemple, si une application tente d'écrire dans un répertoire tel que "C: \ Program Files \ appname \ settings.ini" vers lequel l'utilisateur ne dispose pas de droits d'écriture, l'écriture sera redirigée vers "C: \ Users \ username \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini ". La fonctionnalité de redirection n'est fournie que pour les applications 32 bits non élevées et uniquement si elles n'incluent pas de manifeste qui demande des privilèges spécifiques.

Compagnon Geek
la source
1
Nan. Il n'y a pas de redirection de "fichiers programme (x86)" vers "Fichiers programme". Il existe une redirection de C:\Windows\System32vers C:\Windows\SysWOW64, mais en fait, il s'agit du redirecteur WOW64, pas du redirecteur de virtualisation.
Maximus
7

Journeyman Geek explique ce qu'est la virtualisation. Je vais expliquer comment Windows détermine le besoin de virtualisation.

Le système d'exploitation regarde dans le fichier manifeste de l'application (ou ressource PE) et si le manifeste n'est pas trouvé du tout ou n'a pas la compatibilitysection appropriée - Windows suppose que l'application est "ancienne" et active la virtualisation.

<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. La virtualisation fonctionne pour les (sous-) clés de registre comme HKEY_LOCAL_MACHINEpour HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE.

Maximus
la source