在 Windows 10 中,預設 shell 是explorer.exe
,為您提供工作列、桌面圖示和開始功能表。
從Windows 10 v1909,甚至可能是v1903開始,微軟決定使用超級鍵(CTRL- ALT- SHIFT- WIN)加上幾個鍵,這是Office應用程式的預設鍵,不允許沒有安裝office的使用者隨意使用這些鍵。
我將這些鍵綁定到各種程式中的操作,但現在這些鍵中的每一個都會在我的網頁瀏覽器中開啟一個頁面,導航到我不使用的Office365,或者,對於OneDrive 的O,給我一條錯誤訊息因為我沒有安裝OneDrive。
使用登錄機碼調整,應該能夠在按下按鈕時使其不開啟任何內容,但在 Windows 10 v1909 中,這不再起作用。
我需要擺脫這種行為,所以我做了一些研究:
微軟似乎直接將此支援內建到explorer.exe
;我可以殺人explorer.exe
,熱鍵終於消失了,但是當我開始時explorer.exe
,它們又回來了。
看起來,在 啟動時explorer.exe
,這些金鑰會註冊一次,如果金鑰註冊失敗,Explorer 將不會重試。這本質上意味著,為了找回我的熱鍵,我需要終止資源管理器,重新啟動使用這些熱鍵的應用程序,然後啟動資源管理器。甚至可以殺死資源管理器,啟動一個註冊所有 Office 熱鍵的應用程序,啟動資源管理器,然後取消註冊 Office 熱鍵,從那一刻起它們就完全免費了。
鑑於對我來說,我只有一個使用所有這些全域熱鍵的程序,我所需要做的就是在啟動資源管理器之前啟動該程序,就可以了。
我當然可以運行一個腳本來殺死資源管理器,啟動我的程序,然後啟動資源管理器,但考慮到這無論如何都會在系統啟動時運行,如果我可以啟動我的啟動腳本而不是資源管理器,則可以避免資源管理器閃爍,可以透過設定備用 shell 來完成的操作。然而,據我所知,只有.exe
檔案可以設定為 shell。
有人知道如何將.cmd
檔案(或其他腳本語言)設為 shell,或者有人知道解決我的全域熱鍵問題的乾淨方法嗎?
編輯:我使用的是 Windows 10 專業版。
我實際上嘗試製作一個 VB .net 程序,該程序explorer.exe
在註冊熱鍵後啟動,但無法使其可靠地工作。如果explorer.exe
不是shell,我啟動explorer.exe,雖然它不運行,但我只得到一個文件瀏覽器,而不是任務欄等。序列,所以我必須大大延遲我的日常工作,這意味著在某些時候我會明顯地重新啟動資源管理器,這遠非理想。
我曾想過要製作自己的 shell 作為工作列和桌面的替代品,但考慮到我使用實際工具視窗管理器,並且它依賴資源管理器作為 shell,這也不是很理想。因此,出於這個原因,這個問題仍然懸而未決,儘管我擔心我所問的根本不可能。
答案1
鍵盤過濾器(WMI 提供者參考)
僅在 Windows 10 企業版和 Windows 10 教育版中支援
WEKF_PredefinedKey
此種封鎖或取消封鎖預先定義的組合鍵,例如Ctrl+ Alt+Deleteclass WEKF_PredefinedKey { [Static] uint32 Enable ( [In] string PredefinedKey< ); [Static] uint32 Disable ( [In] string PredefinedKey ); [Key] string Id; [Read, Write] boolean Enabled; };
來源: 微軟文件
答案2
我還沒有測試過這個想法,但它似乎合理且簡單:建立一個.reg
檔案來刪除或修改註冊表中由資源管理器建立的攻擊性條目,而不是取代資源管理器。然後在 Windows 的任務規劃程式中建立一個任務,該任務將執行該.reg
檔案並在您每次登入 Windows 時觸發。
有關更多信息,請參閱:
如何使用 .reg 檔案新增、修改或刪除登錄子項目和值
答案3
這裡已經解決了: https://github.com/stringlapse/OfficeKeyFix
您應該為 C++ 正常任務載入具有擴充功能的 Visual Studio。創建空項目,建立它,移動到自動運行。
最好在任務計劃器中建立延遲 30 或 60 秒的任務。