平台:2K/XP
最低需求:熟悉 Regedit.exe,最好也知道一些 Windows 設定值在登錄裡的對應位置

偶然發現了在開始功能表以及資料夾的進階選項裡加入自訂項目的方法,雖然不見得有什麼實質的作用,而且只研究出一點皮毛,但還是覺得蠻好玩的,反正閒著沒事,就在此跟各位登錄份子分享,有興趣的可以來研究看看,或者有已經知道者也順便教教小弟。

在工作列上按右鍵,選《內容》→《「開始」功能表》→《自訂》→《進階》,可以看到一些啟動功能表項目。在此舉的兩個例子,一個是在此清單裡加入子選單彈出速度(SubMenuDelay)以及在桌面上顯示版本兩個選項(如下圖):


例一:SubMenuDelay
1. 執行 Regedit.exe
2. 找到下列機碼:

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/StartMenu

在此機碼下面會有 StartMenu 及 StartPanel 兩個機碼,StartMenu 為傳統開始功能表,StartPanel 則是 XP 的新型開始功能表。現在以 StartPanel 為例。

3. 在 StartPanel 之下新增一個機碼,命名為 MenuDelay(或者另行取名)
4. 點選新增的 MenuDelay,在右邊視窗新增:


名稱 -> 種類 -> 值
------------------------------------------------------
Type -> 字串值 -> group
Text -> 字串值 -> 彈出子選單:
Bitmap -> 字串值 -> %SystemRoot%\system32\shell32.dll,40
------------------------------------------------------

Type 為選項種類。由於 MenuDelay 下面會有三個子選項,是個群組,所以為 (Option) Group。
Text 為顯示出來的字串,它的值可以依個人喜好更改
Bitmap 是它的代表圖示,可有可無

5. 在 MenuDelay 下新增三個機碼,分別命名為 Fast、Medium 以及 Slow
6. 在各個機碼下增加下列值:

6.1 Fast 機碼

名稱 -> 種類 -> 值
---------------------------
CheckedValue -> 字串值 -> 0
DefaultValue -> 字串值 -> 400
HKeyRoot -> DWORD -> 0x80000001
RegPath -> 字串值 -> Control Panel\Desktop
Text -> 字串值 -> 馬上
Type -> 字串值 -> radio
ValueName -> 字串值 -> MenuShowDelay
-----------------------------

說明:
設定子選單彈出速度的值位於 Registry 裡的 HKEY_CURRENT_USER/Control Panel/Desktop/MenuShowDelay,它是個字串值,預設值為 400,數值越大就越慢。
上面的各項數值之中,HKeyRoot、RegPath 及 ValueName 就是指向該 MenuShowDelay 的位置。
HKeyRoot 的值為 DWORD (16 進位),0x80000000=HKEY_CLASSES_ROOT,0x80000001=HKEY_CURRENT_USER,0x80000002=HKEY_LOCAL_MACHINE,依此類推...
RegPath 就是 HKEY_xxxxxx\ 下面的路徑
ValueName 即目標值,在此為 MenuShowDelay
CheckedValue 即點選此項目後,目標值的值
DefaultValue 為預設值
Text 為顯示出來的字串,可依喜好更改
Type 為選項類型,在此為 radio (button)

6.2 Medium 機碼

名稱 -> 種類 -> 值
--------------------------------------------
CheckedValue -> 字串值 -> 400
DefaultValue -> 字串值 -> 400
HKeyRoot -> DWORD -> 0x80000001
RegPath -> 字串值 -> Control Panel\Desktop
Text -> 字串值 -> 稍候 (預設)
Type -> 字串值 -> radio
ValueName -> 字串值 -> MenuShowDelay

6.3 Slow 機碼

名稱 -> 種類 -> 值
--------------------------------------------
CheckedValue -> 字串值 -> 65535
DefaultValue -> 字串值 -> 400
HKeyRoot -> DWORD -> 0x80000001
RegPath -> 字串值 -> Control Panel\Desktop
Text -> 字串值 -> 等我按滑鼠鍵
Type -> 字串值 -> radio
ValueName -> 字串值 -> MenuShowDelay


最後,到開始功能表的進階選項裡去看看吧

例二:在桌面上顯示版本
這個比較簡單,由於是個 yes/no 的選項,因此只要弄個 checkbox 就行了。

設定在桌面顯示版本的登錄值位於:
HKEY_CURRENT_USER/Control Panel/Desktop/PaintDesktopVersion
而 PaintDesktopVersion 是個 DWORD 值。就以這些為基本資料,再到:

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/StartMenu/StartPanel

加入一個機碼,命名為 ShowVersion,它裡面有下列值:

名稱 -> 種類 -> 值
--------------------------------------------
CheckedValue -> DWORD -> 1
UncheckedValue -> DWORD -> 0
DefaultValue -> DWORD -> 0
HKeyRoot -> DWORD -> 0x80000001
RegPath -> 字串值 -> Control Panel\Desktop
Text -> 字串值 -> 在桌面顯示視窗版本
Type -> 字串值 -> checkbox
ValueName -> 字串值 -> PaintDesktopVersion

注意上面多了一個叫 UncheckedValue 的字串值。由於這次是個 checkbox,所以還得註明不勾選時它的數值是多少。在這個例子裡,CheckedValue(打勾時)=1,UnCheckedValue(未打勾時)=0

大功告成

完成後的 Regedit 畫面如下圖:


以上兩個選項在按確定後還得重新登入才能生效,未免有點美中不足。我目前還沒研究出如何讓設定值立即見效,有知道的朋友請教一下吧。

P.S. 要在資料夾的進階選項裡加入類似的自訂選項,請至下列位置動手:

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced