Necesito evitar que el control .NET WebBrowser muestre "¿Desea abrir o guardar este archivo?" y los diálogos "Guardar como". En cambio, quiero mostrar un cuadro de mensaje que le diga a los usuarios que las descargas de archivos están deshabilitadas por razones de seguridad.¿Cómo bloquear las descargas en el control .NET WebBrowser?
Comencé con el evento FileDownload
de WebBrowser
, pero no permite la cancelación. Luego, utilicé el enfoque de CodeProject: Extended .NET 2.0 WebBrowser Control para implementar mi propio evento basado en la llamada COM original utilizando la interfaz DWebBrowserEvents2
. Cuando arreglé el código de acuerdo con an MS knowledge base entry about a bug with the FileDownload signature, se llamó al controlador de eventos y pude cancelar la descarga.
Esto no funciona con todas las descargas, sin embargo: descargar URL que apunta a una dirección URL que incluyen .exe
provocar el evento y se puede cancelar antes de que aparezca el cuadro de diálogo - pero para otros (como .do
), el controlador de eventos no se llama hasta que el el usuario hace clic en Open
, Save
o Cancel
en el cuadro de diálogo.
Una posible solución podría ser la de intercept WH_CALLWNDPROCRET
messages and 'answer' the dialog before it is shown to the user, pero suena como mucho esfuerzo y yo también preferiría una solución más limpia ...
¿Alguien sabe cómo bloquear de forma fiable todas las descargas?
Déjame llegar a este punto ... ¿Quieres permitir el acceso a Internet para tus usuarios (que no es más que descargar archivos en la computadora) y quieres bloquear TODAS las descargas? – Sergio
@Sergio: Creo que Jens quiere bloquear todos los archivos, que no se pueden mostrar directamente en webbrowser. – TcKs
TcKs es correcto, quiero bloquear todo lo que no se puede mostrar. El objetivo no es evitar las descargas, sino evitar que se muestren los cuadros de diálogo "Guardar archivo como" para que el usuario no tenga acceso al disco duro. Mi aplicación está instalada como el shell de Windows (sin Explorer, sin menú de inicio). –