SP2防火牆引起程式出錯的解決方法(轉)

worldblog發表於2007-08-11
SP2防火牆引起程式出錯的解決方法(轉)[@more@]

  安裝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;

  要顯示或設定這個埠例外的範圍,點選改變範圍,然後確定;

  在例外選項卡中,注意到新的服務已經列出,要開啟這個埠,選中這個服務前面的選擇框,然後確定。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-945613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章