Google
 

星期六, 7月 12, 2014

Windows 8 Wifi 連線能力受限的解決方式

Windows 8的Wifi常常莫名其妙罷工,三不五時用到一半就突然變成受限制的連線,wifi變成無法連線。不只使用中三不五時會發生,睡眠後醒來也常常這樣。這麼明顯的問題,不知微軟為什麼拖了那麼久還搞不定?
每次遇到這種問題都要很鴕鳥地把wifi關掉再重開一次,讓wifi重抓IP。
因為發生機率實在太高了,乾脆弄一個批次檔自動執行wifi關閉和重開的動作,內容如下:

netsh interface set interface name="Wi-Fi" disable
netsh interface set interface name="Wi-Fi" enable

把這個內容存在一個.bat或.cmd檔內,每次wifi出問題時,只要用管理員身份執行這個批次檔即可。

再分析wifi罷工時,由於連線出現問題,因此都會發生DNS名稱解析逾時的狀況。在系統的事件檢視器中如下:


利用這個特性,我們用工作排程器定義一個觸發事件,每當DNS發生解析逾時的情況,第一個懷疑就是wifi又出狀況了,所以就自動把wifi關掉再重開一次。

打開"電腦管理",在工作排程器中建立一個工作,如下:

名稱隨自己高興取,注意執行工作的使用者帳戶必需有管理員的身份。設定"不論使用者登入與否均執行"。

解發程序設定在系統記錄裡發生由DNS Client Events發出1014(即DNS解析逾時)事件時自動觸發。

觸發的動作就是執行上述的開關wifi批次檔。把批次檔放在根目錄下,不要放在使用者目錄裡,以免去因權限產生的問題。

設定好之後,只要wifi罷工,排程器就會自動把wifi重開,讓wifi順利繼續工作了!


8/15補充:

有網友反應這個方法工作狀況不如預期,在這做補充說明。
當然,看起來這不是簡單的問題,所以我只能提供一個可能方向,讓大家可以有個方向去找找看問題可能出在哪裡。

首先,某些電腦在開關wifi後仍然有連線受限的問題。
我不確定您的情況是否如下圖:


如果是的話,那不用擔心。因為我的電腦上也是這樣,但重點是網路使用是沒問題的。
如果windows下方的task bar上的網路符號出現驚嘆號那才是無法連線,這時做wifi開關的動作應該是有效的。

其次,在指令中的name裡所用的名稱,確實在某些中文版機器上可能要用 "無線網路連線"。
至於到底該用什麼名稱,請打開控制台裡的 "網路連線" 看看你的無線網路是顯示什麼名稱,若它顯示 "Wi-Fi" 就用 "Wi-Fi";若是顯示 "無線網路連線" 就用 "無線網路連線"。



最後一個問題,當發生DNS Client Events不會觸發開關Wifi的批次檔,這個問題看起來比較複雜一點。
首先請確認一下執行工作的帳戶是否有管理員身份,並確定 "不論使用者登入與否均執行"。
然後在觸發程序中,確認來源和事件識別碼都設定正確,並且勾選 "已啟用",表示啟用這個觸發條件。
如果你的設定都是正確的,卻還是看不出它有觸發,請把你的工作的歷程記錄打開。
接著,先手動觸發看工作是否能順利執行,這在歷程記錄裡會看到一個 "由使用者觸發的工作"。
若手動觸發可以順利完成,接著你必需故意製造觸發條件(DNS Client Events, 以我的電腦來說,睡眠後再醒來很容易就產生這個事件),再回到歷程記錄裡看看實際有沒有觸發。

如下圖,在系統記錄中,8/15 11:01:13、8:52:55、8:23:53所發生的DNS Client Events,在工作歷程記錄裡分別在11:01:14、8:52:56、8:23:54都有被正確觸發。


如果繼續往下找,還有很多這樣相對應的記錄,表示DNS Client Events都有觸發所設定的工作。



張貼留言