IE10-如何防止“;您当前的安全设置不允许下载此文件“;弹出窗口

本文关键字:下载 不允许 文件 窗口 设置 何防止 IE10- 安全 | 更新日期: 2023-09-27 18:23:46

我使用的是wpf WebBrowser控件(System.Windows.Controls),我需要防止用户执行各种操作,如下载文件或打印页面。我禁用了Internet Explorer选项中的文件下载选项("安全"选项卡->"自定义级别"->"下载"->"文件下载")。正因为如此,在点击pdf链接后,我得到的不是文件下载弹出窗口,而是一个弹出窗口,上面有这样一条消息:"您当前的安全设置不允许下载此文件"。

有没有办法防止这个消息发生?我只是不希望从用户的角度执行任何操作。我使用IE10。

IE10-如何防止“;您当前的安全设置不允许下载此文件“;弹出窗口

WPF WebBrowser是一个非常有限(但不可扩展、密封)的WebBrowser ActiveX控件包装器。幸运的是,有一个黑客可以用来获取底层ActiveX对象(注意,这可能会在未来的.NET版本中发生变化)

using System.Reflection;
using System.Windows;
namespace WpfWbApp
{
    // By Noseratio (http://stackoverflow.com/users/1768303/noseratio)
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.WB.Loaded += (s, e) =>
            {
                // get the underlying WebBrowser ActiveX object;
                // this code depends on SHDocVw.dll COM interop assembly,
                // generate SHDocVw.dll: "tlbimp.exe ieframe.dll",
                // and add as a reference to the project
                var activeX = this.WB.GetType().InvokeMember("ActiveXInstance",
                    BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                    null, this.WB, new object[] { }) as SHDocVw.WebBrowser;
                // now we can handle previously inaccessible WB events 
                activeX.FileDownload += activeX_FileDownload;
            };
            this.Loaded += (s, e) =>
            {
                this.WB.Navigate("http://technet.microsoft.com/en-us/sysinternals/bb842062");
            };
        }
        void activeX_FileDownload(bool ActiveDocument, ref bool Cancel)
        {
            Cancel = true;
        }
    }
}

XAML:

<Window x:Class="WpfWbApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <WebBrowser Name="WB"/>
</Window>