Partager via


Définition Process-Wide sécurité via le Registre

Si vous souhaitez définir la sécurité pour l’ensemble d’un processus, une solution consiste à définir les niveaux de sécurité souhaités dans le Registre. Si votre application ne peut pas appeler CoInitializeSecurity ou si vous préférez ne pas utiliser la sécurité par programmation, il peut s’agir d’une bonne option. Si vous décidez de définir la sécurité à l’échelle du processus à l’aide du Registre, vous devez savoir que si vous appelez CoInitializeSecurity dans votre programme, COM utilisera les valeurs de CoInitializeSecurity et ignorera les valeurs du Registre.

Il existe deux façons de définir la sécurité dans le Registre de votre application :

  • Vous pouvez utiliser Dcomcnfg.exe, qui fournit une interface utilisateur simple pour modifier les valeurs de sécurité. Tous les serveurs COM peuvent être configurés à l’aide de Dcomcnfg.exe. Pour plus d’informations, consultez Définition Process-Wide sécurité à l’aide de DCOMCNFG. Toutefois, les applications clientes n’apparaissent normalement pas dans Dcomcnfg.exe sauf si le client crée un GUID et l’entre dans le Registre.
  • Vous pouvez définir des valeurs de sécurité sous la clé AppID de l’application. Le reste de cette rubrique explique comment définir la sécurité dans le Registre à l’aide de la clé AppID .

Un AppID est un GUID qui représente un processus serveur pour une ou plusieurs classes. Chaque classe est associée à exactement un AppID, et les AppID ne peuvent être affectés qu’aux EXE. Les DLL n’obtiennent pas d’ID d’application à moins qu’elles ne s’exécutent dans un substitut, puis c’est le processus de substitution qui a l’AppID. Si plusieurs DLL sont chargées dans un substitut, chaque substitut n’a qu’un seul AppID.

Pour certains serveurs COM, le code d’inscription génère un AppID et place des entrées dans le Registre qui mappent l’AppID au nom de l’exécutable. Toutefois, certains serveurs COM ne fournissent pas cette fonctionnalité. Toutefois, si le code d’inscription du serveur ajoute une entrée pour HKCR\CLSID{ServerCLSID}\LocalServer32 lors de l’exécution de dcomcnfg.exe, il ajoute automatiquement un AppID pour le CLSID.

Pour un client COM qui n’est pas un serveur, ce mappage n’est pas créé, car le client n’est jamais inscrit. Par conséquent, pour définir la sécurité à l’aide de la clé AppID , le client doit créer les entrées de Registre nécessaires, soit par programmation à l’aide des fonctions de Registre , soit à l’aide de regedit.

Si vous décidez de définir la sécurité à l’échelle du processus dans le Registre sous la clé AppID , sachez qu’il existe deux valeurs nommées sous la clé AppID que vous pouvez définir sans avoir d’autorisations d’administrateur :

Les valeurs AuthenticationLevel et AccessPermission sont définies indépendamment et ont des valeurs par défaut distinctes. Si la valeur AuthenticationLevel n’est pas présente, la valeur LegacyAuthenticationLevel est utilisée comme valeur par défaut. De même, si la valeur AccessPermission n’est pas présente, la valeur DefaultAccessPermission est utilisée comme valeur par défaut. Toutefois, les valeurs AuthenticationLevel et AccessPermission sont liées de différentes manières :

  • Si AuthenticationLevel est none, les valeurs AccessPermission et DefaultAccessPermission sont ignorées pour cette application.
  • Si AuthenticationLevel n’est pas présent et que LegacyAuthenticationLevel est none, les valeurs AccessPermission et DefaultAccessPermission sont ignorées pour cette application.

Définition de la sécurité Process-Wide