Abstract

Access Connection是ThinkPad的招牌軟體,相當好用,不過XP開機時在『載入你的個人設定』時會卡很久,本文提出解決方法。

Introduction

轉貼自​​http://thinkpanda.wordpress.com/2006/11/29/%e7%99%bb%e5%85%a5%e7%9a%84%e7%ad%89%e5%be%85/​​ 與 ​​http://thinkpanda.wordpress.com/2007/01/02/%e5%a6%82%e4%bd%95%e6%aa%a2%e6%9f%a5windows-xp%e7%99%bb%e5%85%a5%e7%b7%a9%e6%85%a2%e7%9a%84%e5%95%8f%e9%a1%8c/​

自從T60 入手後, 發覺在Windows XP 登入時老是要在”Loading your User Settings” 顯示時等好一陣子, 大概是一分鐘吧. 這段時間似乎小黑沒有什麼忙著, 就只是等.

後來發現這等待時間和AccessConnection 掛在登入過程的一個DLL 有關. 那個叫ACNotify.dll 的東東.於是我在Registry動了點手腳.

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\ACNotify鍵下的Asynchronous 的值由0改成1, 那麼登入時就快如閃電的進入桌面了.

有效歸有效, 不過我還是不太肯定有沒有副作用. 還有, 我的AccessConnections 是4.12, 不知道這方法對其他版本是否同樣有效.

後記:

如何找到這個改動呢。先看​​這個​​​ 。做了所述的改動後,就可以看到登入時有什麼Windows Notification Package DLL 在動作。在我的Thinkpad, 我看到的是ACNotify.dll 佔用了最多時間。從​​Microsoft MSDN​​得知,有個Asynchronous 數值可以令Windows 以一個分開的Thread 去調用有關DLL,那麼ACNotify.dll 的工作就可以不佔用時間了。放膽一試,真的可行。

在Windows XP 登入後,我們會見到”Loading your personal settings” 訊息,然後要等好一陣子才能夠進入Windows 桌面。要等多久視乎這Windows 裝了什麼軟件。但問題是我們往往不知道在那段等候時間中,Windows 在幹什麼。故此也無從判斷是什麼程序佔用了這段時間。

其實Windows 的 Registry 已備有設施讓我們作這樣的檢查。在Registry 有這樣的一個value:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\

policies\system\verbosestatus

這個值的預設內容是0。如果將之改成1,那麼在登入和登出Windows XP 是就不會在畫面顯示”Loading your personal settings” 訊息,而以更詳細的資訊取代。其中一項重要資訊就是執行已登記成為​​Winlogon Notification Package​​ 的DLL。要知道有什麼DLL 已經登記,可在registry 中查看

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\

Winlogon\Notify

啟動了verbosestatus 之後,我們就可以看到什麼DLL 佔用了最多時間,從而思考因應之道。

這注意,Windows Vista 已​​取消支援​​Winlogon Notification Package, 所以以上所說的不適用於Windows Vista.