網名館

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的鍵盤加密程序?

標籤:死機 qq Windows Vista