所有使用者設定檔之間是否共用相同的 Windows 註冊表?

所有使用者設定檔之間是否共用相同的 Windows 註冊表?

我的 Windows 10 PC 上有兩個使用者設定檔:一個開發人員設定檔和一個常規設定檔。在開發人員設定檔中,我執行了一個.reg檔案來新增一個上下文選單項,該選單項目使用活動的 Git Bash 提示字元開啟 Windows 終端實例。

令我驚訝的是,其他 Windows 設定檔中的上下文功能表也顯示了新的功能表選項,但按一下時,它顯示錯誤,指出無法存取指定的路徑或檔案。這是因為我沒有在常規設定檔中安裝 Windows 終端機。刪除常規設定檔中的相關登錄項目也會從開發人員設定檔的上下文選單中刪除該選單項目。

兩個設定檔之間是否共用相同的 Windows 註冊表並導致發生這種情況?如果是這樣,我如何為每個使用者設定檔建立一個單獨的註冊表?

註冊文件:

Windows Registry Editor Version 5.00
    
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal]
@="Open Windows Terminal Here"
"Icon"="%USERPROFILE%\\AppData\\Local\\WTerminal\\terminal.ico"
        
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal\command]
@="wt new-tab --profile \"Git Bash\" --startingDirectory ."

答案1

是和不是。HKEY_LOCAL_MACHINE是共享的;HKEY_CURRENT_USER是每個使用者私有的。

同時 HKEY_CLASSES_ROOT 是虛擬的實際上是一棵樹合併視圖每個用戶HKCU\Software\ClassesHKLM\Software\Classes樹。 (這是 Windows 9x 的遺留物,沒有分離。)

對 HKCR 進行的寫入將轉到個人註冊表或系統註冊表,具體取決於您的權限,以及更新的密鑰最初是從 HKCU 還是 HKLM 加載的。

要具有每個使用者的文件關聯,請將它們放入HKEY_CURRENT_USER\Software\Classes而不是使用 HKEY_CLASSES_ROOT。同樣,要建立系統範圍的,請將它們放入 HKLM 中。

答案2

是的,有一個註冊表。最重要的兩個真正的蜂巢是HKEY_LOCAL_MACHINEHKEY_USERS。正如後者所暗示的,它為多個用戶保留了價值。

現在HKEY_CURRENT_USER是一個子鍵的虛擬映射HKEY_USERS,粗略地說就是啟動該進程的使用者的鍵。因此,不同的進程可能具有不同的HKEY_CURRENT_USER映射。同樣,HKEY_CLASSES_ROOT也是一個虛擬視圖,由HKEY_LOCAL_MACHINE和那個HKEY_USERS子鍵合併而成。

不過,註冊表支援存取控制清單 (ACL),因此您可能無法看到其他使用者的金鑰。

相關內容