【问题标题】:What causes Windows Firewall to block an application?是什么导致 Windows 防火墙阻止应用程序?
【发布时间】:2010-10-16 13:05:21
【问题描述】:

我有一个在用户桌面上本地运行的 Windows 窗体应用程序。它访问 Internet 的唯一方法是执行 System.Diagnostics.Process.Start(url) 来启动用户的默认浏览器并将其指向各种 URL(检查更新、联系我们等)。如果用户没有通过单击菜单项或按钮明确请求,这一切都不会发生。

在我的机器上,我偶尔会在启动程序时收到 Windows 防火墙警告消息,说 Windows 防火墙已“阻止了程序的某些功能”以保护机器。在 Visual Studio 中运行我的程序时,我偶尔也会收到此警告(警告对话框显示 vshost 已被网络阻止)。它不会一直发生。

我没有从我的任何客户那里听说他们的 PC 上发生过这种情况,但这并不意味着没有。对于不太懂技术的用户来说,这是一个有点可怕的警告,所以我想弄清楚如果可能的话如何消除它。

我的程序可能会做什么来触发此警告?

编辑:我的程序在启动时唯一有点不寻常的事情是它使用 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase 类来强制执行单实例应用程序。我知道这在幕后做了一些线程魔术来检测新实例并重定向它们。是否有可能因为某种原因在网络上监听?

【问题讨论】:

    标签: .net winforms windows-firewall


    【解决方案1】:

    只有当您的程序正在侦听端口时才会触发 Windows 防火墙 - 有效地充当服务器。 System.Diagnostics.Process.Start 不会触发 Windows 防火墙。

    相反,WindowsFormsApplicationBase 可能会导致防火墙警告,因为 WindowsFormsApplicationBase 使用远程处理来感知自身的其他实例。使用反射器,我在 WindowsFormsApplicationBase.Run() 中找到了这段代码:

    TcpChannel channel = this.RegisterChannel(secureChannel);
    RemoteCommunicator communicator = new RemoteCommunicator(this, this.m_MessageRecievedSemaphore);
    string uRI = applicationInstanceID + ".rem";
    new SecurityPermission(SecurityPermissionFlag.RemotingConfiguration).Assert();
    RemotingServices.Marshal(communicator, uRI);
    CodeAccessPermission.RevertAssert();
    string uRL = channel.GetUrlsForUri(uRI)[0];
    this.WriteUrlToMemoryMappedFile(uRL);
    this.m_FirstInstanceSemaphore.Set();
    this.DoApplicationModel();
    

    只要您将 WindowsFormsApplicationBase 用于其 SingleInstance 功能,我不知道有任何解决方法。

    【讨论】:

    • 就是这样 - 没有任何东西明显在监听任何端口。在 Visual Studio 中和运行已安装的可执行文件时都会出现警告。
    • 有点不寻常的是,我使用 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase 来强制执行单实例应用程序。这确实在幕后进行线程化;我想知道它是否可以在网络上监听远程进程的东西。
    • 打开命令提示符并在程序运行时运行“netstat -b”,看看它是否正在监听任何端口。
    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    相关资源
    最近更新 更多