Pregunta

He escrito un control ActiveX en C # y lo he hecho funcionar usando el comando regasm, y funciona bien siempre que el nivel de seguridad esté configurado en bajo. Luego, como siguiente paso, hice un instalador .cab (ICD - Descargador de componentes de Internet), y he firmado mi archivo .cab y el archivo ActiveX .dll con un certificado de prueba. Cuando llego a la página html desde mi navegador, las partes de instalación funcionan bien con la configuración de seguridad predeterminada de IE, pero al final parece que no hay nada instalado y se muestra una cruz roja en lugar de ActiveX. Además, he explorado la carpeta Descargar archivos de programa en el directorio de Windows, en la columna de estado muestra la palabra "desconocido". mientras está " instalado " para todos los demás activeX. Cuál puede ser el problema. Además, si uso el comando regasm para registrar el ensamblaje, funciona bien, y he firmado el ActiveX, pero ¿tengo que mover la barra de seguridad a la configuración de mi navegador? por que es asi? entonces, ¿cuál es el propósito de firmar? He usado RegisterServer = yes en mi archivo .inf

Avíseme, si alguien ya ha pasado por este problema.

¿Fue útil?

Solución

Para ejecutarse en IE, también necesita implementar IObjectSafety para que IE sepa que es seguro que lo llame una persona que no es confiable y / o que no tenga datos confiables. (Si es realmente seguro, eso es)

Personalmente, solo he hecho esto en C ++ & amp; ATL, no C #, pero aquí hay una publicación de blog que parece que debería ayudarlo a lograr esto en C #.

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

La razón de esto es que los scripts de personas nefastas pueden usar su objeto para eludir la seguridad normal que ofrece IE, por lo que su Objeto ActiveX debe defenderse de las páginas que no son de confianza.

Cuando firma un taxi, le está diciendo al usuario que el taxi que está descargando es el que cree que está descargando, es decir, que alguna persona maliciosa no ha reemplazado su taxi por uno peligroso. Si confían en usted como editor, pueden confiar en que ActiveXObject no hará nada malo solo, o en combinación con otro código en el que confíen.

Cuando implementa IObjectSafety, para devolver INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA, le está diciendo a IE que el objeto no puede ser usado maliciosamente por nadie más y, por lo tanto, es seguro ejecutarlo junto con código en el que el usuario no confía explícitamente.

Otros consejos

Para mí, la solución anterior no funciona. Necesitaba registrar también el tlb

con: regasm MyDll.DLL / tlb

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top