Domanda

È possibile usare un ocx (controllo ActiveX) su una winform (probabilmente aggiungendolo in modo programmatico) senza prima avere l'ocx registrato con regsrv32?

Quello che sto cercando di ottenere è abilitare l'installazione di xcopy. Ho avuto il " AxInterop. .dll " e " Interop. .dll " file generato dalla mia macchina di sviluppo.

Ho visto la possibilità di chiamare una DLL COM senza prima registrarla ( ProSysLib , secondo l'autore, ma non l'ho ancora provato), dal momento che ocx è anche basato su COM, quindi presumo che sia basato su COM ci deve essere anche un modo per farlo.

È stato utile?

Soluzione

Sì, questo può essere fatto. È necessario presumere che l'applicazione verrà distribuita solo su Windows XP (o Windows Server 2003) o versioni successive, quindi è possibile utilizzare ciò che viene chiamato "COM senza registrazione" per far sì che ciò accada.

Essenzialmente ciò che fai è creare un file manifest per la DLL di controllo ActiveX in modo che il caricatore di Windows e amp; Le DLL COM sanno quale sia la sua registrazione senza doverle inserire nel registro.

Una procedura dettagliata di cosa fare è in questo articolo su MSDN: Attivazione senza registrazione dei componenti COM: una panoramica

" Passaggio 6 " e "Passaggio 7" in quell'articolo contiene tutto di cui avrai bisogno.

L'ho appena provato su uno dei miei programmi C # che utilizza un controllo griglia Microsoft ActiveX (il vecchio "MS Flex Grid") e funziona perfettamente. Assicurarsi di creare un file manifest sia per l'applicazione che per la DLL COM e sostituire i GUID appropriati nei punti giusti. Potrebbe essere necessario utilizzare OLEVIEW per estrarre gli ID corretti da utilizzare dalla DLL ActiveX se non li hai a portata di mano.

Altri suggerimenti

Tieni presente che apparentemente l'utilizzo di COM per componenti COM senza registro creati in .NET può causare casualmente arresti anomali su Windows XP!

Collegamenti: Domanda Stackover dove Ho appreso questo, la knowledge base di Microsoft articolo citata in quella domanda. Esiste un aggiornamento rapido, ma non è consentito ridistribuirlo.

È anche molto più semplice in Visual Studio: vai su Riferimenti, trova le posizioni create dal tuo ocx (dovrebbero esserci 2, AxSomething e Something) e impostate per entrambi Isolati: vero nelle loro proprietà. Nessun manifest, nessun codice. Ora dovresti distribuire il tuo exe con il file dll contenente ocx. Sulla tua macchina per lo sviluppo, l'ocx può essere registrato.

Dopo 10 ore di ricerche su come eseguire l'app VB6 con OCX su Win7 senza registrarlo e diritti di amministratore, ho trovato qui una soluzione con pochi clic: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

È necessario selezionare Incorpora manifest per farlo funzionare. Funziona come un incantesimo!

Pubblico la soluzione qui, perché ho trovato anche questa domanda qui.

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