Question

J'ai un contrôle ActiveX que je charge avec JavaScript dans Internet Explorer. Il a besoin d'exécuter l'intégrité en tant que milieu sous contrôle de compte dans Vista et Win7. Ceci est écrit en C / C ++, compilé dans Visual Studio.

Une façon d'élever les privilèges est de créer un processus de courtier qui peut demander un niveau d'intégrité moyenne. Cependant, pour ce projet, ce n'est pas une solution pratique. J'ai vraiment besoin le contrôle ActiveX pour exécuter lui-même élevé.

Ma question est: quelle est la meilleure façon de le faire? Puis-je modifier les options de construction sur le projet d'être un exe, et utiliser le système COM connecter interprocessus pour gérer automatiquement les communications, ou dois-je être plus sophistiqués? Est-ce que je dois faire quoi que ce soit compliqué comme appeler manuellement CreateProcess et faire une sorte de courtier, ou peut-il travailler comme un exe ActiveX qui s'élève?

Était-ce utile?

La solution

Cela dépend surtout ce que votre contrôle ActiveX fait, comment vous intégrez dans une page et sa mise en œuvre.

L'approche la plus simple serait sans doute de mettre en œuvre comme un EXE serveur, inscrivez-vous comme approprié, puis donner les autorisations exécutables à exécuter à moyen dans la section bas droits politique Elevation.

Si vous ne voulez pas aller que vous pouvez bien écrire simple commande hors processus serveur qui encore une fois que vous enregistrez et vous implémentez votre propre IClassFactory aux demandes de création de proxy dans la DLL existante . Vous pouvez même ajouter une clé AppID pour votre objet existant et spécifiez est DllSurrogate bien (autre que son enregistrement en tant que COM + application), vous pourriez ne pas être facilement en mesure de forcer la création de l'objet dans la mère porteuse (parce que la valeur par défaut pour IE est de spécifier CLSCTX_ALL lors de la création d'objets qui reprendra l'enregistrement en cours en premier).

Bien sûr, après tout ce que si votre code fait trop d'hypothèses sur l'endroit où il est ou utilise des interfaces non-proxy il pourrait ne pas fonctionner de toute façon.

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