Question

J'ai écrit un contrôle ActiveX en C # et je l'ai fait fonctionner à l'aide de la commande regasm. Cela fonctionne bien tant que le niveau de sécurité est défini sur bas. Ensuite, à l'étape suivante, j'ai créé un programme d'installation .cab (ICD - téléchargeur de composant Internet) et avoir signé mon fichier .cab et mon fichier ActiveX .dll avec un certificat de test. Lorsque je clique sur la page html de mon navigateur, les éléments d'installation fonctionnent correctement avec les paramètres de sécurité par défaut d'IE, mais à la fin, rien ne semble s'installer et une croix rouge apparaît à la place d'ActiveX. De plus, j'ai exploré le dossier Download Program Files sous le répertoire Windows. Dans la colonne d'état, il affiche le mot "inconnu". pendant qu’il est " installé " pour tous les autres activeX. Quel peut être le problème. De plus, si j’utilise la commande regasm pour enregistrer l’assemblage, cela fonctionne bien et j’ai signé l’ActiveX mais je dois quand même déplacer la barre de sécurité au bas de mon navigateur? pourquoi c'est ainsi? alors quel est le but de la signature? J'ai utilisé RegisterServer = yes dans mon fichier .inf

Faites-moi savoir si quelqu'un a déjà traversé ce problème?

Était-ce utile?

La solution

Pour pouvoir fonctionner dans IE, vous devez également implémenter IObjectSafety afin que IE sache qu'il est sûr d'être appelé par un appelant non approuvé et / ou avec des données non fiables. (S'il est réellement sûr, c'est)

Personnellement, je l’ai fait uniquement en C ++ & amp; ATL, pas C #, mais voici un article de blog qui devrait vous aider à atteindre cet objectif en C #.

http://blog.devstone.com/aaron/2007 /06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

La raison en est que les scripts de personnes néfastes peuvent utiliser votre objet pour contourner la sécurité normale offerte par IE. Votre objet ActiveX doit donc se défendre lui-même contre les pages non fiables.

Lorsque vous signez un taxi, vous dites à l’utilisateur que le taxi qu’il télécharge est celui qu’il pense télécharger, c’est-à-dire qu’un individu malveillant n’a pas remplacé votre taxi par un véhicule dangereux. S'ils vous font confiance en tant qu'éditeur, ils peuvent alors être assurés qu'ActiveXObject ne fera rien de mal par lui-même ou en combinaison avec un autre code en lequel ils ont confiance.

Lorsque vous implémentez IObjectSafety, renvoyez INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA, vous indiquez à IE que l'objet ne peut pas être utilisé de manière malveillante par quelqu'un d'autre et qu'il est donc sûr de l'exécuter avec du code en qui l'utilisateur n'a pas explicitement confiance.

Autres conseils

Pour moi, la solution ci-dessus ne fonctionne pas. J'avais besoin d'enregistrer aussi le tlb

avec: regasm MyDll.DLL / tlb

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top