解决 winform打开网页 和WebBrowser打开链接360误报拦截的问题
以下方法我已经在自己电脑上验证通过,其他电脑并未测试,请广大读者自行验证并反馈,如果有更好的方法请指教。
在winform中如果使用这种方法弹出网页,例如这样
1 | Process.start( "http://www.xgjxc.top" ); |
或者另外如果winform中嵌入了一个webbrowser控件,加载了一个网页,例如这样
1 | this .webBrowser1.Navigate("http: //www.xgjxc.top/home.html“); |
网页中有个超链接,例如这样
1 | <a href= "http://www.xgjxc.top/post/15.html" target= "_blank" >小狗进销存功能模块介绍 (2015-05-10)</a> |
那么点击这个超链接会自动打开一个浏览器窗口
如果按照上面的方法来打开网页,十有八九会出现以下的画面:
不得不说,360越来越流氓了,他完全不看软件有无恶意特征码,也完全不看要打开的网页有无恶意内容,只要你要打开一个网页,则拦截之。
另外一个就是我把程序用VS自带打包打包了一下,碰到没有安装.Net的客户机,则自动从官方位置下载安装包进行安装,这个时候360照样拦截不误,如下图:
一共拦截两次,.Net包拦截一下,简体中文语言包拦截一次,打包的时候都是选的”从官方未知下载组件“,不得不说,360就是一个大傻逼。
下面进入正题,说下怎么解决打开网页这件事。
winform中点击按钮直接打开网页,采用下面方案:
核心代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public partial class Home : Form { [DllImport( "shell32.dll" )] public extern static IntPtr ShellExecute( int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd); public enum ShowWindowCommands : int { SW_HIDE = 0, SW_SHOWNORMAL = 1, SW_NORMAL = 1, SW_SHOWMINIMIZED = 2, SW_SHOWMAXIMIZED = 3, SW_MAXIMIZE = 3, SW_SHOWNOACTIVATE = 4, SW_SHOW = 5, SW_MINIMIZE = 6, SW_SHOWMINNOACTIVE = 7, SW_SHOWNA = 8, SW_RESTORE = 9, SW_SHOWDEFAULT = 10, SW_MAX = 10 } public Home() { InitializeComponent(); } } |
然后点击事件中的代码:
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { ShellExecute(0, @"open", @"http://www.xgjxc.top", null, null, (int)ShowWindowCommands.SW_NORMAL); }
这样的话360就不在会拦截了。
同理,如果是点击webbrowser中的连接,思路是这样的,首先拦截这个点击动作,不让他弹出网页,而采用上面的方法进行弹出,则就会跳过拦截了。
代码如下:
加载网页
private void Home_Load(object sender, EventArgs e) { this.webBrowser1.Navigate("http://www.xgjxc.top/home.html"); }
注册NewWindow事件:
private void webBrowser1_NewWindow(object sender, CancelEventArgs e) { ShellExecute(0, @"open", this.webBrowser1.StatusText.ToString(), null, null, (int)ShowWindowCommands.SW_NORMAL); e.Cancel = true; }
首先e.Cancel=true 让点击动作失效,然后this.webBrowser1.StatusText.ToString()获取到刚才点击的连接,StatusText是状态栏文字,我们知道浏览器如果鼠标移动到连接上,状态栏是会显示连接URL的。
希望可以帮到同样受到360困扰的朋友。
分类:
开发日记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库