Partager via


Virtualisation du Registre

virtualisation du Registre est une technologie de compatibilité des applications qui permet aux opérations d’écriture de Registre qui ont un impact global sur les emplacements par utilisateur. Cette redirection est transparente vers les applications qui lisent ou écrivent dans le Registre. Il est pris en charge à partir de Windows Vista.

Cette forme de virtualisation est une technologie de compatibilité d’application intermédiaire ; Microsoft envisage de le supprimer des futures versions du système d’exploitation Windows, car davantage d’applications sont compatibles avec Windows Vista et versions ultérieures de Windows. Par conséquent, il est important que votre application ne dépende pas du comportement de la virtualisation du Registre dans le système.

La virtualisation est destinée uniquement à assurer la compatibilité des applications existantes. Les applications conçues pour Windows Vista et les versions ultérieures de Windows ne doivent pas écrire dans des zones système sensibles, ni s’appuyer sur la virtualisation pour résoudre les problèmes. Lors de la mise à jour du code existant pour s’exécuter sur Windows Vista et les versions ultérieures de Windows, les développeurs doivent s’assurer que les applications stockent uniquement des données dans des emplacements par utilisateur ou dans des emplacements d’ordinateur dans %alluserprofile% qui utilisent correctement une liste de contrôle d’accès (ACL).

Pour plus d’informations sur la création d’applications compatibles UAC, consultez le guide du développeur UAC.

Vue d’ensemble de la virtualisation

Avant Windows Vista, les applications étaient généralement exécutées par les administrateurs. Par conséquent, les applications peuvent accéder librement aux fichiers système et aux clés de Registre. Si ces applications étaient exécutées par un utilisateur standard, elles échouent en raison de droits d’accès insuffisants. Windows Vista et versions ultérieures de Windows améliorent la compatibilité des applications pour ces applications en redirigeant automatiquement ces opérations. Par exemple, les opérations de Registre vers le magasin global (HKEY_LOCAL_MACHINE\Software) sont redirigées vers un emplacement par utilisateur dans le profil de l’utilisateur appelé magasin virtuel (HKEY_USERS\<SID utilisateur>_Classes\VirtualStore\Machine\Software).

La virtualisation du Registre peut être largement classifiée dans les types suivants :

Open Registry Virtualization

Si l’appelant n’a pas d’accès en écriture à une clé et tente d’ouvrir la clé, la clé est ouverte avec l’accès maximal autorisé pour cet appelant.

Si l’indicateur REG_KEY_DONT_SILENT_FAIL est défini pour la clé, l’opération échoue et la clé n’est pas ouverte. Pour plus d’informations, consultez « Contrôle de la virtualisation du Registre » plus loin dans cette rubrique.

Write Registry Virtualization

Si l’appelant n’a pas d’accès en écriture à une clé et tente d’y écrire une valeur ou de créer une sous-clé, la valeur est écrite dans le magasin virtuel.

Par exemple, si un utilisateur limité tente d’écrire une valeur dans la clé suivante : HKEY_LOCAL_MACHINE\Software\AppKey1, la virtualisation redirige l’opération d’écriture vers HKEY_USERS\<SID utilisateur>_Classes\VirtualStore\Machine\Software\AppKey1.

Lire la virtualisation du Registre

Si l’appelant lit à partir d’une clé virtualisée, le Registre présente une vue fusionnée des valeurs virtualisées (à partir du magasin virtuel) et des valeurs non virtuelles (du magasin global) à l’appelant.

Par exemple, supposons HKEY_LOCAL_MACHINE\Software\AppKey1 contient deux valeurs V1 et V2 et qu’un utilisateur limité écrit une valeur V3 dans la clé. Lorsque l’utilisateur tente de lire des valeurs à partir de cette clé, la vue fusionnée inclut les valeurs V1 et V2 du magasin global et de la valeur V3 à partir du magasin virtuel.

Notez que les valeurs virtuelles sont prioritaires sur les valeurs globales lorsqu’elles sont présentes. Dans l’exemple ci-dessus, même si le magasin global avait la valeur V3 sous cette clé, la valeur V3 serait toujours retournée à l’appelant à partir du magasin virtuel. Si V3 devait être supprimé du magasin virtuel, V3 est retourné à partir du magasin global. En d’autres termes, si V3 devait être supprimé de HKEY_USERS\<SID utilisateur>_Classes\VirtualStore\Machine\Software\AppKey1 mais HKEY_LOCAL_MACHINE\Software\AppKey1 avait une valeur V3, cette valeur serait retournée à partir du magasin global.

Étendue de virtualisation du Registre

La virtualisation du Registre est activée uniquement pour les éléments suivants :

  • Processus interactifs 32 bits.
  • Clés dans HKEY_LOCAL_MACHINE\Software.
  • Clés auxquelles un administrateur peut écrire. (Si un administrateur ne peut pas écrire dans une clé, l’application aurait échoué sur les versions précédentes de Windows même si elle était exécutée par un administrateur.)

La virtualisation du Registre est désactivée pour les éléments suivants :

  • Processus 64 bits.

  • Processus qui ne sont pas interactifs, tels que les services.

    Notez que l’utilisation du Registre comme mécanisme de communication interprocessus (IPC) entre un service (ou tout autre processus qui n’a pas de virtualisation activé) et qu’une application ne fonctionne pas correctement si la clé est virtualisée. Par exemple, si un service antivirus met à jour ses fichiers de signature en fonction d’une valeur définie par une application, le service ne met jamais à jour ses fichiers de signature, car le service lit à partir du magasin global, mais l’application écrit dans le magasin virtuel.

  • Traite qui empruntent l’identité d’un utilisateur. Si un processus tente une opération lors de l’emprunt d’identité d’un utilisateur, cette opération ne sera pas virtualisée.

  • Processus en mode noyau, tels que les pilotes.

  • Les processus qui ont requestedExecutionLevel spécifiés dans leurs manifestes.

  • Clés et sous-clés de HKEY_LOCAL_MACHINE\Software\Classes, HKEY_LOCAL_MACHINE\Software\Microsoft\Windowset HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT.

Contrôle de la virtualisation du Registre

En plus de contrôler la virtualisation au niveau d’une application à l’aide de demandéExecutionLevel dans le manifeste, un administrateur peut activer ou désactiver la virtualisation par clé pour les clés dans HKEY_LOCAL_MACHINE\Software. Pour ce faire, utilisez l’option FLAGS de l’utilitaire de ligne de commande Reg.exe avec les indicateurs répertoriés dans le tableau suivant.

Drapeau Signification
REG_KEY_DONT_SILENT_FAIL Cet indicateur désactive la virtualisation du Registre ouverte. Si cet indicateur est défini et qu’une opération ouverte échoue sur une clé sur laquelle la virtualisation est activée, le Registre ne tente pas de rouvrir la clé. Si cet indicateur est clair, le Registre tente de rouvrir la clé avec MAXIMUM_ALLOWED accès au lieu de l’accès demandé.
REG_KEY_DONT_VIRTUALIZE Cet indicateur désactive la virtualisation du Registre d’écriture. Si cet indicateur est défini et qu’une opération de clé ou de valeur de création échoue, car l’appelant n’a pas suffisamment d’accès à la clé parente, le Registre échoue. Si cet indicateur est clair, le Registre tente d’écrire la clé ou la valeur dans le magasin virtuel. L’appelant doit avoir la KEY_READ droite sur la clé parente.
REG_KEY_RECURSE_FLAG Si cet indicateur est défini, les indicateurs de virtualisation du Registre sont propagés à partir de la clé parente. Si cet indicateur est clair, les indicateurs de virtualisation du Registre ne sont pas propagés. La modification de cet indicateur affecte uniquement les nouvelles clés décroissantes créées après la modification de l’indicateur. Il ne définit pas ou efface ces indicateurs pour les clés descendantes existantes.

 

L’exemple suivant montre l’utilisation de l’utilitaire de ligne de commande Reg.exe avec l’option FLAGS pour interroger l’état des indicateurs de virtualisation pour une clé.

C:\>reg flags HKLM\Software\AppKey1 QUERY

HKEY_LOCAL_MACHINE\Software\AppKey1

        REG_KEY_DONT_VIRTUALIZE: CLEAR
        REG_KEY_DONT_SILENT_FAIL: CLEAR
        REG_KEY_RECURSE_FLAG: CLEAR

The operation completed successfully.

Chaque fois que l’audit est activé sur une clé en cours de virtualisation, un nouvel événement d’audit de virtualisation est généré pour indiquer que la clé est virtualisée (en plus des événements d’audit habituels). Les administrateurs peuvent utiliser ces informations pour surveiller l’état de la virtualisation sur leurs systèmes.

prise en main du contrôle de compte d’utilisateur

Comprendre et configurer le contrôle de compte d’utilisateur

meilleures pratiques et recommandations pour les développeurs pour les applications dans un environnement à privilèges minimum