平淡
因為保存LTK信息的鍵值默認受系統保護,直接啟動regedit.exe無法看到鍵值,所以這里必須使用PsExec.exe來加載啟動。

藍牙鼠標在和系統首次進行連接時,它們之間會進行配對,配對成功后就會生成LTK(即Long-Term Key,譯為長期密鑰)。這樣下次需要再連接的時候,系統會檢測配對設備的LTK,如果一致則成功連接,否則需要重新配對(圖1)。
由于Windows10和Linux在連接藍牙鼠標時,它們會分別生成不同的LTK,比如在Windows 10中連接藍牙鼠標生成的LTK是A,但是切換到Linux系統中后這個連接的密鑰就變為B。這樣當我們再次切換到Windows 10系統中后,由于藍牙鼠標保存的LTK仍然是B,Windows 10就會將藍牙鼠標重新識別為新設備,因此需要重新進行配對才能正常使用。反之亦然。不過對Windows 10系統來說,成功連接后會在注冊表中保存LTKA,我們可以手動將其改為LTKB。這樣在Linux中連接后藍牙鼠標保存的也是LTKB,從而實現切換到Windows 10中之后也能成功連接。
如上所述,通過手動更改Windows系統保存的LTK可以解決問題。下面我們以在Linux(以Ubuntu 20.10操作為例)中保存的LTK為準,介紹如何在Windows 10下修改LTK,使之和Liunx下顯示的一致。
1.獲取Ubuntu系統下的LTK
進入Ubuntu系統,按提示先連接藍牙鼠標,成功完成連接并可以正常使用后啟動終端。接著在終端輸入命令“SU”并回車執行,按提示輸入Ubuntu賬戶和登錄密碼。接著繼續輸入“cd/var/lib/bluetooth”和“Is”命令并執行,在這里可以看到一個類似“49:BA:F9:77:05:42”的目錄名,這個對應的是本機MAC地址的名稱(圖2)。
繼續輸入并執行“cd 49:BA:F9:77:05:42”和“Is”命令,在該目錄下還可以看到類似“29:88:5F:4E:E6:55”的子目錄,這個對應的是藍牙鼠標的MAC地址。最后在終端中輸入并執行“cat info”命令顯示其中“info”文件的信息(這個文件里保存LTK信息),其中[Linkkey]字段下“key=”后的代碼(即95406DAD56FDFFDF42FDFF47DAFDI2EF)即為LTK代碼,按提示復制并保存備用(圖3)。
2.在Windows 10下更改LTK
重啟電腦并切換到Windows 10系統。進入系統后先使用有線鼠標或者直接使用觸摸板(請勿重新配對藍牙鼠標,以免生成新的LTK)操作,接著到“https:∥docs.microsoft.com/en-us/sysinternals/downloads/psexec”下載PsExec.zip,然后將其全部文件解壓到q:\aa備用。接著以管理員身份啟動命令提示符,輸入“cdg:\aa”和“PsExec.exe-s-i regedit”,回車后啟動注冊表編輯器(圖4)。

打開注冊表編輯器后依次展開[HKEY LOCAL MACHlNE\SYSTEM\Current ControlSet\services\BTH PORT\Parameters\Keys],在[Keys]鍵值下可以看到[49baf9770542]和[29885f4ee655]子項,這個和本機的MAC、之前成功連接的藍牙鼠標的MAC值相對應(圖5)。
切換到圖5的右側窗格,其中的“LTK”項的數據就是之前成功連接藍牙鼠標的LTK代碼。可以看到,Windows 10和Ubuntu下保存的LTK代碼并不相同,這也是為什么切換系統后需要重新連接藍牙鼠標的原因。現在按提示雙擊“LTK”項,在打開的窗口中將其原來的數據全部刪除,然后輸入和圖3顯示的“key=”后的數值一致的代碼即可(圖6)。
完成上述的操作后,在Windows 10中關閉藍牙再開啟,這樣可以成功連接藍牙鼠標。而且以后無論在哪個系統中,都可以自動連接藍牙鼠標使用了。其他藍牙設備的設置類似。