安装Microsoft Windows XP Service Pack 2 (SP2)后, 一些应用程序可能无法在更新的操作系统上运行。这是因为默认情况下,Windows Firewall 为启用状态并屏蔽未被认可的外来连接。本文讨论了如何建立一个防火墙例外项,通过将一个应用程序加入例外列表从而允许这个程序继续运行。
为了提高基于Windows XP SP2的计算机的安全性能,Windows Firewall 屏蔽了未被认可的外来连接。但是有时我们还是需要建立一个例外规则来允许一些入站的连接。例如,在下列情况下:
通过Internet进行多人联网游戏时;
要从即时通讯软件接收文件;
安装了Windows XP SP2后,客户端应用程序可能不能够成功的从服务器接收数据,以下是一些例子:
FTP 客户端;
流媒体M播放软件;
邮件客户端的新邮件提醒;
同样,运行在Windows XP SP2上的服务器端的应用程序也可能不能成功的回应客户端请求,以下是一些例子:
Web服务器, 如IIS;
远程桌面;
文件共享;
Windows XP SP2在默认情况下使用下面的交互式组件来实现这个例外规则:
Windows Firewall 安全提醒
有时Windows Firewall在屏蔽一个应用程序的运行时,会出现一个Windows Firewall 安全提醒 对话框。这个对话框包含以下信息:
...to help protect your computer, Windows Firewall has blocked this program from receiving unsolicited information from the Internet or a network
这个提醒信息显示了程序的名称和程序的开发者。这个对话框包含3个选择:
Unblock the program
Keep blocking this program
Keep blocking this program, but ask me again later
下面说明如何使用这个对话框来允许这个程序运行。
允许程序运行
一些程序为了能够正常运行,必须从网络上接收信息。这些信息通过入站端口进入计算机。Windows Firewall 要允许这些信息进入,必须在计算机上打开正确的入站端口。要使程序和未装SP2之前一样的进行通信来允许程序正常的运行,可以使用以下的任何一个方法:
通过安全提醒来允许程序运行
在 安全提醒 对话框中,选择 Unblock this program.
单击确定.
通过Windows防火墙设置来允许程序运行
如果你在安全提醒对话框中没有选择 Unblock the program,这个程序将被禁止运行。你可以通过配置Windows Firewall 来同样达到这个目的:
点击开始,运行,在打开输入框中输入 wscui.cpl,然后点击确定
点击Windows Firewall
在Windows Firewall对话框中,选择例外选项卡,然后选择添加程序
在添加程序的对话框中,选择列表中的程序或者通过浏览来选定一个程序
如果你不能确定这个需要设定的程序的具体名称,参见后面所述
选定程序后,确定
在例外列表中,确定你选中的程序项前面的选择框为选中状态,确定
注意 如果你以后不想将这个程序作为例外,只需要清除这个程序项的选择框.
把程序添加到例外列表中有以下好处:
你不需要知道程序具体使用的哪一个端口(与此相比,当你想通过打开端口方式来达到目的,你必须知道程序所使用的端口号,这将在后面详述)
例外列表中的程序所使用的端口仅在等待接收一个连接的时候才会打开
确定并打开端口
如果将程序加入到例外列表之后还是不能够正常运行,或者是在选定例外程序时无法确定程序名称,你可以手工打开端口。在手工打开端口之前,必须先确定程序使用了哪些端口。确定程序使用端口的可靠方法当然是联系程序开发或支持厂商以获得所需的信息。但这种方法多数情况下不是那么方便,而且有时程序所用端口的列表不可提供时,你可以使用 Netstat.exe 来确定这些端口。
用 Netstat.exe 来确定端口
要使用 Netstate.exe 来确定程序所使用的端口,按照以下步骤:
运行这个出问题的程序,并试图使用其网络功能。如对于媒体播放程序,打开一个音频流;对于Web服务器,启动Web服务;
点击开始,运行,输入 cmd ,确定;
获取监听端口列表 - 在命令提示行中输入以下命令并回车:
netstat –ano > etstat.txt
获取进程标识符来确定正在运行的进程 - 在命令提示行中输入以下命令并回车:
tasklist > tasklist.txt
注意 如果问题程序是作为服务运行的,需要在输入的命令中加入 /s vc 开关来得到每个进程中加载的服务:
tasklist /svc > tasklist.txt
打开 Tasklist.txt,定位到需要诊断的那个问题程序,记下这个进程的进程标识符;
打开 Netstat.txt,记下关联到那个进程标识符的的所有入口,同时记下所使用的通信协议(TCP或UDP);
这个进程所使用的端口号将影响到如何解决这个问题:
如果进程使用大于1024的端口,这些端口号可能不能改变;
如果端口号小于1024,这个程序可能使用的是一个端口范围。因此,仅仅打开某些单独的端口可能没法解决这个问题;
用 Windows Firewall 手工打开端口
要确定确切的端口号可以联系程序开发或支持厂商以获得所需的信息或者查看用户文档。确定端口需要打开的端口后,按以下步骤:
单击开始,运行,输入 wscui.cpl ,确定;
选择 Windows Firewall;
选择例外选项卡,单击添加端口;
在添加端口对话框中,在端口号栏中输入需要打开的端口号,并选择 TCP 或 UDP 类别;
输入端口名称,然后确定,例如输入 GamePort;
要显示或设定这个端口例外的范围,点击改变范围,然后确定;
在例外选项卡中,注意到新的服务已经列出,要打开这个端口,选中这个服务前面的选择框,然后确定。