安裝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 注意 如果問題程序是作為服務運行的,需要在輸入的命令中加入 /svc 開關來得到每個進程中加載的服務:
tasklist /svc > tasklist.txt 打開 Tasklist.txt,定位到需要診斷的那個問題程序,記下這個進程的進程標識符;
打開 Netstat.txt,記下關聯到那個進程標識符的的所有入口,同時記下所使用的通信協議(TCP或UDP);
這個進程所使用的端口號將影響到如何解決這個問題:
如果進程使用大於1024的端口,這些端口號可能不能改變;
如果端口號小於1024,這個程序可能使用的是一個端口范圍。因此,僅僅打開某些單獨的端口可能沒法解決這個問題;
用 Windows Firewall 手工打開端口
要確定確切的端口號可以聯系程序開發或支持廠商以獲得所需的信息或者查看用戶文檔。確定端口需要打開的端口後,按以下步驟:
單擊開始,運行,輸入 wscui.cpl ,確定;
選擇 Windows Firewall;
選擇例外選項卡,單擊添加端口;
在添加端口對話框中,在端口號欄中輸入需要打開的端口號,並選擇 TCP 或 UDP 類別;
輸入端口名稱,然後確定,例如輸入 GamePort;
要顯示或設定這個端口例外的范圍,點擊改變范圍,然後確定;
在例外選項卡中,注意到新的服務已經列出,要打開這個端口,選中這個服務前面的選擇框,然後確定;