INFO : Procédure utilisée par Internet Explorer pour déterminer si des contrôles ActiveX sont fiables

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Résumé

Lorsque vous utilisez des contrôles ActiveX dans une page Web, selon le niveau de sécurité employé, le message d'avertissement ci-dessous peut s'afficher dans Internet Explorer :
Un objet ActiveX présent sur cette page n'est peut-être pas sûr. Voulez-vous lui permettre d'initialiser et d'être accédé par les scripts ?
Cet article explique comment Internet Explorer détermine si un contrôle ActiveX est considéré comme étant fiable pour l'écriture de scripts et l'initialisation.

Plus d'informations

Il existe deux façons de marquer un contrôle comme étant fiable pour l'écriture de scripts et l'initialisation :
  • Implémenter l'interface IObjectSafety.
  • Fournir les clés de Registre suivantes pour le CLSID du contrôle sous la section Catégories implémentées :
    • La clé ci-dessous permet de marquer le contrôle comme étant fiable pour l'écriture de scripts :
      {7DD95801-9882-11CF-9FA9-00AA006C42C4}
    • La clé ci-dessous permet de marquer le contrôle comme étant fiable pour l'initialisation à partir de données persistantes :
      {7DD95802-9882-11CF-9FA9-00AA006C42C4}
Microsoft recommande d'implémenter IObjectSafety pour marquer un contrôle comme étant fiable ou non fiable. Vous empêchez ainsi les autres utilisateurs de reconditionner le contrôle et de le marquer comme étant fiable alors que ce n'est pas le cas.

L'interface IObjectSafety permet à un conteneur de récupérer les fonctions d'initialisation et d'écriture de scripts du contrôle par l'intermédiaire de sa méthode SetInterfaceSafetyOptions. Dans un premier temps, Internet Explorer vérifie si un contrôle implémente ou non l'interface IObjectSafety. Le cas échéant, Internet Explorer appelle SetInterfaceSafetyOptions pour que les interfaces IPersist vérifient si l'objet est fiable pour l'initialisation. Lorsqu'un contrôle fait tout d'abord l'objet d'un script, Internet Explorer appelle en premier lieu SetInterfaceSafetyOptions sur l'interface IDispatchEx du contrôle. En cas d'échec, il appelle SetInterfaceSafetyOptions sur l'interface IDispatch.

Si le contrôle retourne une valeur indiquant qu'il n'est pas fiable pour l'une des interfaces, Internet Explorer avertit l'utilisateur en fonction de ses paramètres de sécurité pour la zone correspondante (Internet, Intranet local, etc.).


Si le contrôle n'implémente pas l'interface IObjectSafety, Internet Explorer recherche sous la section Catégories implémentées du contrôle les clés mentionnées ci-dessus. Si ces clés sont absentes, Internet Explorer avertit l'utilisateur en fonction des paramètres de sécurité.

REMARQUE : l'implémentation de l'interface IObjectSafety est toujours prioritaire. Si un contrôle implémente l'interface IObjectSafety et retourne une valeur indiquant qu'il n'est pas fiable pour les interfaces IDispatch ou IPersist, les clés de Registre sont ignorées même si elles sont présentes dans la section Catégories implémentées.

Dans certains cas, il se peut qu'un contrôle soit agrégé « à l'aveugle » et l'agrégation peut passer les appels de fonction QueryInterface directement au contrôle agrégé. Si le contrôle agrégé implémente l'interface IObjectSafety et se marque lui-même comme n'étant pas fiable, les entrées de Registre de l'agrégation sont ignorées. Dans ce scénario, vous pouvez implémenter IObjectSafety de façon explicite dans l'agrégation et exposer uniquement les méthodes fiables du contrôle agrégé.

Références

Pour plus d'informations, reportez-vous à la section « Component Development » sur le site Web MSDN (Microsoft Developer Network) Workshop à l'adresse suivante (en anglais) : Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
161873 COMMENT FAIRE : Marquer des contrôles MFC comme étant fiables pour l'écriture de scripts/l'initialisation

168371 COMMENT FAIRE : Contrôles ATL marqués par IObjectSafety comme étant fiables pour l'initialisation

182598 COMMENT FAIRE : Implémenter IObjectSafety dans des contrôles Visual Basic

(c) Microsoft Corporation 1999, Tous droits réservés. Contribution de Kusuma Vellanki, Microsoft Corporation.

Propriétés

ID d'article : 216434 - Dernière mise à jour : 23 janv. 2006 - Révision : 1

Commentaires