QQ導致Windows Vista宕機原因的初步分析

自從筆者用VISTA以來一直備受Tencent qq(以下簡稱QQ)的折磨!此話怎講呢?在筆者的記憶中,從自己最早用的Windows Vista Beta1到Windows Vista Beta2,乃至Windows Vista 5472都不能順利的執行最新版QQ,即Tencent QQ 2006。對於一個學生來說的筆者,大多同學和朋友都只使用QQ來交流,可想而知QQ在自己網路生活有多麼重要的地位。但是在自己最心愛的Windows Vista中卻不能用QQ與朋友共享Windows Vista帶給我的無限快樂與憂愁很是鬱悶。雖然java平臺的luma qq可以模擬QQ的部分功能,但始終不及Tencent QQ……

  終於在Windows Vista Pre-RC1 5536中得到了一些啟示,隨即初探出了QQ在Windows Vista宕機的幾個原因,在此與大家共享。同時,也增加了自己對Windows Vista安全性的信心。

  奇怪的宕機經過

  自從筆者從前喜好用Administrator賬戶登陸Windows Vista受到了各種不安全的因素影響,導致系統崩潰數次,安裝數次,其中感慨頗多!當拿到最新測試版Windows Vista Pre-RC1 5536,筆者決定“聽從”Microsoft的安全建議:用普通使用者賬號登陸,開啟UAC……在這個最新版中,筆者感受到了更加人性化的UAC設計,因此也不再“懼怕”UAC帶來的麻煩,其實準確的說這已經不算麻煩了,因為現在對UAC的改進已經讓使用者感受不到它的存在,但安全性絲毫沒有減弱。

  廢話也說了一堆,下面來說說自己遇到的這個奇怪的問題:在vistafans論壇上聽很多壇友說Windows Vista Pre-RC1 5536中執行QQ,往往輸入到第四位密碼,系統就藍屏……正好最新版QQ 2006B3推出了,筆者也抱著試一試的態度安裝並運行了,但是神奇的事發生了,不僅沒有在輸入第四位密碼時宕機,而且QQ執行狀態良好,沒有宕機症狀!當時很是慶幸,不知道是不是自己人品好的原因才這樣。但是其中也出現了幾個問題:1.鍵盤加密無法啟動;2.無法在QQ目錄下找到以自己號碼命名的使用者資訊的資料夾。自己憑直覺覺得是否應該用Administrator身份來執行QQ才能解決一下問題(因為自己此時已經習慣了普通使用者帳號使用,而且人性化的UAC設計也並沒有給自己帶來多少不便,從而不再用Administrator賬戶來登陸系統了)。於是就通過Windows Vista一個方便的程式執行許可權管理選項進行了QQ(如圖)



  哈哈,方法果真奏效,鍵盤加密已經可以啟動了。懷著興奮的心情填好了號碼,輸好了密碼。但是“回車”以後沒有反應,定睛一看,怎麼密碼輸入到第四位就不能繼續輸入了,再試試看……不幸的事真的發生了,Windows Vista藍屏了,DUMP了後就重啟了……

QQ導致Windows Vista宕機原因的初步分析

鍵盤加密在作怪?!

  重啟以後,再次進行試驗,仍然是用Administrator許可權來執行,結果依然藍屏,宕機……第二次重啟後,決定不用Administrator許可權來執行,恢復普通許可權試試,這次終於又成功突破密碼的第四位封鎖,成功地登陸到了QQ。問題可真就奇怪了,在大家心目中,一般用Administrator許可權來執行程式可以達到“完美”的效果,但是這次可就怪了,用Administrator許可權來執行程式反而會宕機。此時筆者突然注意到鍵盤加密這個問題。如圖為鍵盤加密未啟動的提示


  既然懷疑是它就不能放過它!然後筆者到論壇上查看了一些宕機的案例,還有一些網友總結的不宕機的規律,從中可以發現:大多使用者還是習慣以Administrator賬戶登陸計算機,從而可以啟動鍵盤加密導致藍屏;而且有些大膽的使用者也懷疑是鍵盤加密的問題,從而刪除了QQ目錄下兩個鍵盤加密程式的SYS檔案(如下圖),因此沒有了宕機現象!

  難道真是鍵盤加密在作怪?

假設的理論分析

  我們都知道,如果用Administrator賬戶登陸可以獲得計算機的最高許可權(此賬戶預設關閉UAC),因此安全性也相當的高,所以Microsoft才不建議啟用該賬戶。假設我們現在以Administrator賬戶登陸,執行QQ程式,此時QQ程式可以獲得最高的執行許可權來執行其所需要的其他服務或程式,當然鍵盤加密就是這樣一個它所需要的程式,所以這是鍵盤加密可以順利的啟動。反觀普通賬戶,當我們執行QQ時,Windows Vista只允許其自身允許,而沒有其他許可權來執行其他所需要的程式,因此鍵盤加密就被關在了許可權大門以外,從而無法正常允許,從而出現了錯誤提示。當然如果我們此時選中了QQ的“Run as Administrator”這個選項,QQ這個程序就具備了最高許可權,從而可以執行鍵盤加密。值得注意的是,Windows Vista為了防止“Run as Administrator”這個選項的惡意選中而致使一個不安全的程式獲得最高許可權,當我們以Administrator許可權允許它是UAC就會啟動,提示我們是否允許這個未知的可能帶來安全隱患的程式獲得最高許可權允許,這就是UAC人性化和安全性的完美體現。

  從上面的分析我們不難也可以找到第2個問題(無法在QQ目錄下找到以自己號碼命名的使用者資訊的資料夾)的答案。因為此時我們使用普通使用者賬戶執行,只允許其向指定位置(QQ使用者資訊資料夾的指定位置被設在 X:Users[使用者名稱]AppDataLocalVirtualStoreProgram FilesTencentQQX指Windows Vista系統盤)寫入資料。當然,不能正常地向常規資料夾(X:Program FilesTencentQQX指QQ所在碟符)寫入資料的問題,也可以從中得以解釋!

  虛擬重定向的“威力”

  虛擬重定向主要用於UAC相容場景,當一個老的軟體在標準使用者環境執行時,如果需要訪問一個系統目錄並且被拒絕,UAC就會自動將其重定向到其他位置,而該應用程式以為自己能夠有許可權訪問該目錄。這樣,上面筆者奇特的遭遇就不難解釋了:標準使用者下的QQ無法寫入其安裝目錄,所以其他的QQ號碼目錄會被重定向,以便QQ能夠正常執行在UAC環境。虛擬重定向的威力在此體現得淋漓盡致,因此Windows Vista的安全性得以進一步地提高。

  巧妙的解決方法

  這裡介紹兩種常規的解決辦法:

  第一種很簡單,以普通使用者帳號登陸,這時QQ得不到足夠的許可權不能執行鍵盤加密程式從而不會導致系統崩潰

  第二種方法更加徹底,那就是直接刪除X:Program FilesTencentQQ(X指QQ所在碟符)下的和這兩個檔案。

  至今的疑問

  為什麼Windows Vista系統不能相容QQ的鍵盤加密程式?