Domanda

Ho un controllo ActiveX che sto caricando con JavaScript in Internet Explorer. Esso deve essere eseguito l'integrità come mezzo sotto controllo dell'account utente in Vista e Win7. Questo è scritto in C / C ++, compilato in Visual Studio.

Un modo per elevare i privilegi è quello di creare un processo broker che possono richiedere un livello di integrità medio. Tuttavia, per questo progetto, questa non è una soluzione pratica. Ho davvero bisogno il controllo ActiveX stesso per eseguire elevata.

La mia domanda è: qual è il modo più semplice per farlo? Posso cambiare le opzioni di generazione del progetto per essere un exe, e uso l'interprocess COM sistema di gestire automaticamente le comunicazioni collegare, o ho bisogno di essere più sofisticato? Ho bisogno di fare qualcosa di complicato come chiamare CreateProcess e fare una sorta di mediatore manualmente, o può semplicemente lavorare come un exe ActiveX che si eleva?

È stato utile?

Soluzione

Dipende in gran parte quello che fa il controllo ActiveX, come si incorpora in una pagina e come viene implementato.

L'approccio più semplice sarebbe probabilmente per la sua attuazione come un server EXE, registrarlo come appropriato e poi dare le autorizzazioni di esecuzione per l'esecuzione a media nel basso criteri per i diritti Elevation .

Se non si vuole andare lontano che si potrebbe scrivere un semplice personalizzato out-of-process del server che ancora una volta si registra e si implementa il proprio IClassFactory per richieste di creazione di proxy nella DLL esistente . Si potrebbe anche aggiungere una chiave AppID per il vostro oggetto esistente e si specifica che è un DllSurrogate se (altro che la registrazione come un'applicazione COM +) potrebbe non essere facilmente in grado di forzare la creazione dell'oggetto nel surrogata (perché il valore predefinito per IE è di specificare CLSCTX_ALL durante la creazione di oggetti che riprenderà la registrazione in-process prima).

Naturalmente, dopo tutto quello che se il codice fa troppe supposizioni su dove sia o utilizza tutte le interfacce non-proxy non potrebbe funzionare in ogni caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top