我在打开本地计算机上使用ActiveX控件的一组html文件时遇到了问题。
不断的通知弹出是令人沮丧的,因为它出现的每一页。
我不能更改文件,因为它是由外部应用程序生成的,我不想启用IE的ActiveX控件一般。
我想做的是允许我的网页浏览器控件,嵌入在一个WPF窗口,以允许阻止的内容自动如果它是从本地计算机(或至少任何阻止的内容,因为我可以控制什么我的网页浏览器控件可以和不能打开)
我看不出有什么明显的方法来做到这一点,没有选项来允许被阻止的内容,也没有事件来识别被阻止的内容何时被发现。
有没有办法做到这一点?
谢谢
编辑-对这个问题有很多观点,但没有一个评论。我会欢迎任何建议,甚至是一个替代控件,我意识到默认的WebBrowser并不理想。是否有其他浏览器提供此功能?
为了给这个问题增加一点细节,我想我应该再解释一下需求:
所显示的资源是一组html文件,这些文件由无法更改的旧版工具生成为报告。我构建的工具将允许用户定义报告的目的地,然后允许他们使用嵌入式浏览器浏览它。我真的只需要一个控件,将呈现HTML和ActiveX控件作为浏览器,但没有任何干扰,从互联网安全设置。
更新-不幸的是,我不再从事这个项目,但我感兴趣的问题/修复,所以我shal尝试和复制它在我的业余时间。
我也重新命名了这个问题,因为我意识到我正在处理的问题是ActiveX内容,它可能有一个解决方案(见Rajesh的回答),这是特定于这种类型的内容。
3条答案
按热度按时间8yoxcaq71#
您需要将文件位置添加到受信任的站点。这是可能的,无论是在本地计算机上运行的Web服务器,还是它们所在的文件夹是共享文件夹。
在IE中,转到Internet选项>安全性,选择“受信任的站点”,然后单击“站点”按钮。输入位置(即文件:\server-Hostname\Sharedfolder*(对于共享文件夹),然后单击“添加”(确保未选中“需要服务器验证(https:)...”选项)。
如果你在网上搜索“将本地文件添加到受信任的站点”,会有更多的信息可用。我似乎记得添加一个本地文件位置,而不必共享文件夹,但目前我不记得我是如何做到的。
2ic8powd2#
当尝试使用WebBrowser(MSHTML)对象(在本例中为C#程序)从使用ActiveX控件的本地计算机打开HTML文件时,一条或多条安全消息将中断程序执行。
1.打开页面时将显示以下消息:
1.如果第一条消息已被禁止,则当页面的JScript或VBScript代码尝试使用ActiveX控件时,我们仍将收到以下消息:
要禁止显示第一条消息,请将以下Mark of the Web行添加到本地HTML页面的顶部:
<!-- saved from url=(0016)https://localhost -->
要抑制第二条消息并允许控件实际运行,我们需要暂时允许ActiveX控件加载到本地安全区域(区域1)中。最容易的方法是在HKCU中设置一个注册表值,以允许控件加载页面,然后恢复原始注册表值。
对于这如何为IE(使用相同的设置)打开一个安全漏洞,几乎没有(如果有的话)真实的的担忧,因为它只针对本地区域。此外,截至2023年,IE将被禁用为通用浏览器。
在下面的C#代码示例中,原始值立即恢复,在本示例中没有问题。在某些情况下,您可能需要检查DocumentCompleted事件。
注意:WebBrowser控件不使用IE。它使用MSHTML,这是IE使用的相同引擎。如果IE被卸载,WebBowser对象将继续正常工作。如果您的程序通过COM明确使用IE,那么,在这种情况下,它将需要IE,但与流行的看法相反,IE仍然安装在Windows 10和11中,并且仅作为通用浏览器禁用。
其他解决方案:
使用
HTA
扩展名重命名本地HTML文件会在没有提示的情况下运行页面,但随后它们会通过MSHTA.exe运行,从而使WebBrowser对象变得毫无意义。使用本地主机IP地址打开本地文件将抑制某些提示,但初始安全警告仍将保留,并且仍需要允许Active X对象。示例:
file://127.0.0.1/c$/Test/ActiveXTest.htm
MainWindow.xaml.cs
主窗口.xaml
ActiveXTest.htm
bnlyeluc3#
只需将这一行添加到您的html页面的开始处的html标记之前。
<保存自url=(0023)http://www.contoso.com/
然后选择并注解它。